環境など
- 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は以下のように発生しました。
$ php app/console cache:clear
[LogicException]
The container cannot be retrieved as the application instance is not yet set.
なお、自分用ではない環境で自作バッチの起動が正しく起動できたことがあります。
補足2
自作バッチについて
configure
メソッドに 自作クラスプロパティをセットする処理があり、この処理を削除したところ、自作バッチの方は期待通りに動きました。こちらは、解決できたかな、と思います。
cache:clear
について
全く別のエラーが発生するようになりました。
$ php app/console cache:clear
[Symfony\Component\Filesystem\Exception\IOException]
Failed to remove directory "/opt/httpd/htdocs/Admin/app/cache/de~/assetic": The Symfony\Bundle\MonologBundle\DependencyInjection\
Compiler\DebugHandlerPass class is deprecated since version 2.12 and will be removed in 3.0. Use AddDebugLogProcessorPass in Fram
eworkBundle instead..
cache:clear [--no-warmup] [--no-optional-warmers]
開発者が app/cache/de~
をなんとかできればいいので、「解決しないと進めない」から、「まあ、解決できたらいいよね」位になれたのではないかと思います。
「いや、そんなことない、重大だよ!」という突っ込み含めて、こちらについて情報がありましたら、ご情報をお寄せ頂けると助かります。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+1
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
追記
全く別のエラーが発生するようになりました。
アプリの実行ユーザーとコマンドの実行ユーザーが違うからかもしれないですね。
sudo rm -rf app/cache/*
でゴミを消したあとに
sudo chmod -R 777 app/cache
で権限を与えてみて
php app/console cache:clear --no-warmup
でコマンド実行ユーザーがキャッシュを再作成しないようにキャッシュクリアしてみてください。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.19%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2017/04/07 15:08
はい、インストールは完了しています。
Webページもブラウザからアクセスして、見ることができます。
「自作のバッチが動かない」というより、「Symfony基本機能である `cahce:clear` が `app/console` を使って動かせない」という点の方が問題、という印象があります。
まずは、アドバイスいただいた通り、パーミッションを見直してみます。
2017/04/07 15:13 編集
→逆です。
インストール後にカスタマイズされた部分に問題があるから「php app/console cache:clear」が実行できないのです。
cahce:clearは標準で用意されているコマンドなのでインストールが正常に完了した時点で実行すればうまくいくはずです。
パーミッションと合わせて、自作バッチを含めインストール後にカスタマイズされた部分について再確認されることをおすすめします。
2017/04/07 15:16
2017/04/07 16:36
ということでしたので、自作バッチの処理を見直したところ、自作バッチについては、解決できたかと思います。ありがとうございます。
「補足2」の通り、cahce:clear については、まだ何かありそうな状態ですが、ひとまず、自作バッチの開発は進められそうです。
2017/04/07 17:06
→追記しました。
2017/04/07 17:24