phpがエラーログを全然出してくれなくてハマった件
2012-07-31 | カテゴリ >> Word Press

このwordpressはnginx , php , php-fpm , APCで動かしているのですが、以前ふとした瞬間に (正確に言うと、ちょこっとだけfunction.phpを書き換えた瞬間に) 画面が真っ白になった経験があります。

まぁ、いつもの事でphpのどっかに ; が足りてないだとか、ふつうの構文エラーだろうと思ってnginxのエラーログを見ようとしたのですが

・・・・どこにもエラーが出てないやんけ

と驚き、いろいろ探ってみました。

まず、php-fpmなのですがプロセスによって出力先のエラーが違うという事を知りました。

プロセス? は? と思ったのですがpsコマンドで見てみると

# ps aux | grep php-fpm
 root     30742  0.0  0.4 365952  4096 ?        Ss   21:16   0:00 php-fpm: master process (****)
 nginx    30743  0.0  0.3 365952  3912 ?        S    21:16   0:00 php-fpm: pool www
 nginx    30744  0.0  0.3 365952  3912 ?        S    21:16   0:00 php-fpm: pool www
 nginx    30745  0.0  0.4 365952  4772 ?        S    21:16   0:00 php-fpm: pool www
 nginx    30746  0.0  0.3 365952  3912 ?        S    21:16   0:00 php-fpm: pool www
 nginx    30747  0.4  4.9 390268 50808 ?        S    21:16   0:00 php-fpm: pool www
 nginx    30752  0.0  0.3 365952  3916 ?        S    21:16   0:00 php-fpm: pool www

と、マスター(親)プロセスとワーカー(子)プロセスに分かれて動いています。

さらにワーカーのログ出力先の設定は php-fpm.d/www.conf の以下で定義されてました。

; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Default Value: no
catch_workers_output = yes

こちらの項目がコメントアウトされていたので、yesに設定。
こうすることで、マスターのログにリダイレクト可能だそうです。

/etc/init.d/php-fpm restart

で、反映させたところ無事以下のエラーログに全部のエラーが出力されました。

/var/log/php-fpm/error.log

ただ、 /var/log/php-fpm/の下にwww-error.logなるものが生成されており 「ワーカーのログってこっちじゃないのかしら??」 と何度も疑い、デフォルトで apache:apacheになっていたのを nginx へ変更したり、パーミッションを変えたりと あれこれやりましたが全然ダメ。

この辺はいつかまた調査したいと思います。

あと、phpのエラーレベルがnoticeだと、wpのNOTICEが めっちゃめちゃ出ますね 今まで見てなかったので驚きでございました。   おわり。

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn
2012-07-31 | カテゴリ >> Word Press 

関連記事

コメント1件

 【Ansible】最新 LEMP 環境構築プレイブックを作成するときに得られたものまとめ – oki2a24 | 2017.06.04 11:38

[…] phpがエラーログを全然出してくれなくてハマった件 – 東京伊勢海老通信 […]

Comment





Comment



*