VCCWでphpのerror_logを表示する

WordPressのテーマ・プラグイン開発中は、PHPをいじったりしているとすぐページが真っ白になってしまいます。
PHPのエラーログを見れるようにしておくと便利です。
VCCWで見れるようにする方法のメモです。

php設定ファイルを探す

VCCWではphpenvを使っているため、phpの設定ファイルはphpenvの中にあります。
/etc/php.iniではないので注意。
そこで、まずはphp.iniの場所を調べます。
下記プラグインをWordPressでインストールしましょう。
WordPress phpinfo()
プラグインを有効にすると、[設定] > [WordPress phpinfo()]というメニューができるので、そこへ。
「Loaded Configuration File」の項目の値が、設定ファイルのパスです。
スクリーンショット 2016-02-05 15.52.26

私の環境はphp5.6.9なので、5.6.9のフォルダ配下にあるphp.iniが読み込まれています。

php設定ファイルにエラーログ出力の設定を記述する

設定ファイルを開きます。

$ sudo vi /usr/local/phpenv/versions/5.6.9/etc/php.ini

下記の記述を検索します。

;error_log = php_errors.log

これを下記のように変更します。

error_log = /var/log/php/php_errors.log

ファイルを保存します。
最後に変更反映のため、apacheを再起動。

$ sudo /etc/init.d/httpd restart

ログ出力フォルダを作成

フォルダを作るところに移動。

$ cd /var/log

フォルダを作ります。

$ sudo mkdir php

フォルダのユーザーとグループは、apacheの実行ユーザーと同じにします。
VCCWでは、apacheの実行ユーザは

User vagrant
Group vagrant

と設定してあります(/etc/httpd/conf/httpd.confに記載されている)
この情報は、先ほどのphpinfo()の画面でも確認できます。

下記コマンドで変更。

$ sudo chown vagrant:vagrant php

そしてパーミッションも変更します。

$ sudo chmod 644 php

これで、下記の権限になるので、ユーザーに書き込み権限が付与されます。

-rw-r--r--.

ログを出す

では実際にログを出してみましょう。
まずは何か、適当にエラーがが出るように動かしているテーマやプラグインでわざと不正な記述を書き込みます。
そして、ブラウザをリロードします。
ログが出力されているか確認します。

$ vi /var/log/php/php_errors.log

ログファイルができた後は、tailコマンドで常に最新ログを出しておくと便利ですね。

$ tail -f -n 100 /var/log/php/php_errors.log

まとめ

VCCWでは、phpの設定ファイルはphpenvのものを使っている点に注意が必要です。最初、/etc/php.iniを編集してログが出ず、頭をひねっていました。
また、ログを格納するフォルダのUser/Groupと権限も、間違っているとログを書き込むことができないので要注意です。

参考

error_logの出力先を設定する【PHP】【apache2】【debian】
Apache 実行ユーザーの設定