質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Symfony2

Symphony2は、簡単で速く堅牢なプログラムの開発サイクルに焦点を当てた、オープンソースのPHPウェブアプリケーション開発フレームワークです。PHP version 5.3.3以上を対象としています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

2657閲覧

Symfony・app/consoleによる操作でLogicExceptionが発生する

t-sagiri

総合スコア31

Symfony2

Symphony2は、簡単で速く堅牢なプログラムの開発サイクルに焦点を当てた、オープンソースのPHPウェブアプリケーション開発フレームワークです。PHP version 5.3.3以上を対象としています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/04/07 04:38

編集2017/04/07 07:33

環境など

  • Symfony2.7
  • PHP5.4.45
  • gitでコードのバージョン管理をしている

現象

特定のブランチに切り替えて、 php app/console cache:clear を実行すると、LogicExceptionが発生します。

やりたいこと、経緯など

バッチを作りたくて、 php app/console {何か自作のバッチ} でバッチを実行させたいです。
一時的に自分用ではない、別の環境で、自作のバッチを作成し、そこでは動作ができました。
自分用の環境が作れるようになって、gitで自作のバッチを app/console を使って動かしてみましたが、LogicExceptionが発生していました。

Symfonyの基本コンソール機能である、cache:clear でも試してみたところ、LogicExceptionが発生、どうもコンソールを使った機能がLogicExceptionにより使えない状態である模様であることがわかりました。

ログ

app/console を使った時に、 app/log/*.log には何もログは出力されませんでした。

備考

私は初めてSymfonyを使いました。なので、Symfony自体のコードにこれといった見当がつけられない状態です。

補足

LogicExceptionは以下のように発生しました。

bash

1$ php app/console cache:clear 2 3 4 [LogicException] 5 The container cannot be retrieved as the application instance is not yet set.

なお、自分用ではない環境で自作バッチの起動が正しく起動できたことがあります。

補足2

自作バッチについて

configure メソッドに 自作クラスプロパティをセットする処理があり、この処理を削除したところ、自作バッチの方は期待通りに動きました。こちらは、解決できたかな、と思います。

cache:clear について

全く別のエラーが発生するようになりました。

bash

1$ php app/console cache:clear 2 3 [Symfony\Component\Filesystem\Exception\IOException] 4 Failed to remove directory "/opt/httpd/htdocs/Admin/app/cache/de~/assetic": The Symfony\Bundle\MonologBundle\DependencyInjection\ 5 Compiler\DebugHandlerPass class is deprecated since version 2.12 and will be removed in 3.0. Use AddDebugLogProcessorPass in Fram 6 eworkBundle instead.. 7 8 9cache:clear [--no-warmup] [--no-optional-warmers]

開発者が app/cache/de~ をなんとかできればいいので、「解決しないと進めない」から、「まあ、解決できたらいいよね」位になれたのではないかと思います。
「いや、そんなことない、重大だよ!」という突っ込み含めて、こちらについて情報がありましたら、ご情報をお寄せ頂けると助かります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

symfonyのインストールは完了しているという認識で良いですかね?
http://symfony.com/doc/2.7/setup.html#running-the-symfony-application

作成されたバッチの記載がないので何とも言えないですが、symfony2の規約(クラス名など)に則って作成されましたか?
↓をご一読ください。
http://symfony.com/doc/2.7/console.html

あとログ出力されていないのも気になりますね。
「app/cacheand」と「app/logs」のパーミッションを見直してみてください。
http://symfony.com/doc/2.7/setup/file_permissions.html

#####追記

全く別のエラーが発生するようになりました。

アプリの実行ユーザーとコマンドの実行ユーザーが違うからかもしれないですね。

sh

1sudo rm -rf app/cache/*

でゴミを消したあとに

sh

1sudo chmod -R 777 app/cache

で権限を与えてみて

PHP

1php app/console cache:clear --no-warmup

でコマンド実行ユーザーがキャッシュを再作成しないようにキャッシュクリアしてみてください。

投稿2017/04/07 05:13

編集2017/04/07 08:04
xenbeat

総合スコア4258

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

t-sagiri

2017/04/07 06:08

> symfonyのインストールは完了しているという認識で良いですかね? はい、インストールは完了しています。 Webページもブラウザからアクセスして、見ることができます。 「自作のバッチが動かない」というより、「Symfony基本機能である `cahce:clear` が `app/console` を使って動かせない」という点の方が問題、という印象があります。 まずは、アドバイスいただいた通り、パーミッションを見直してみます。
xenbeat

2017/04/07 06:18 編集

>「Symfony基本機能である `cahce:clear` が `app/console` を使って動かせない」という点の方が問題、という印象 →逆です。 インストール後にカスタマイズされた部分に問題があるから「php app/console cache:clear」が実行できないのです。 cahce:clearは標準で用意されているコマンドなのでインストールが正常に完了した時点で実行すればうまくいくはずです。 パーミッションと合わせて、自作バッチを含めインストール後にカスタマイズされた部分について再確認されることをおすすめします。
xenbeat

2017/04/07 06:16

あとコンソールにログが出てないですか?出ていれば質問欄に追記してください。その情報があればもう少し踏み込んでサポートできるかもしれません。
t-sagiri

2017/04/07 07:36

> インストール後にカスタマイズされた部分について再確認されることをおすすめします。 ということでしたので、自作バッチの処理を見直したところ、自作バッチについては、解決できたかと思います。ありがとうございます。 「補足2」の通り、cahce:clear については、まだ何かありそうな状態ですが、ひとまず、自作バッチの開発は進められそうです。
xenbeat

2017/04/07 08:06

>「補足2」の通り、cahce:clear については、まだ何かありそうな状態 →追記しました。
t-sagiri

2017/04/07 08:24

教えていただいた通りにやってみて、解決できました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問