PHPのエラーログを監視する

PHPのエラーは常に画面へ出力されるとは限らない。 例えばコンソールからPHPファイルを実行した場合、 php.iniの設定によってはincludeしたファイルの関数衝突によるFatalエラーはコンソールに表示されない。

PHPのログファイルって何処に吐き出される?

php.ini内でerror_log = "xxx"と記載したxxxにエラーログが吐出される http://jp.php.net/manual/ja/errorfunc.configuration.php#ini.error-log

これはphpinfoで確認できるので、 コンソールなら以下のコマンド打つだけで取得出来て楽 後はそのままtailコマンドで監視すればいい

# php -i | grep error_log
error_log => /var/log/php_error.log => /var/log/php_error.log
# tail -f /var/log/php_error.log

エラー出ないぞ

Apacheを通した場合、ApacheのエラーログにPHPのエラーが吐き出される場合がある CentOSの場合、「/etc/httpd/conf/httpd.conf」ファイル内に記載すると、 その中の記述に従ったディレクトリに作成される

# vi /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
    ServerName   hogehoge.com:80
    ServerAdmin  test@hogehoge.com
    DocumentRoot "/var/www/html/"
    ErrorLog     logs/php.err_log
    CustomLog    logs/php.acc_log combined
    <Directory "/var/www/html/">
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

# tail -f /etc/httpd/logs/php.err_log

上記のErrorLog logs/php.err_logに注目、 デフォルトだとこんな感じの設定になっていると思うが、カレントディレクトリは/etc/httpdになっているので

エラーログは/etc/httpd/logs/php.err_logになる。 後は同じようにtailコマンドで監視すればよい。