Posted at

CentOS で PHP のエラーログが出力されない

More than 1 year has passed since last update.


error_log

デフォルトでは PHP のエラーログは Apache のエラーログ /var/log/httpd/error_log に出力される。

PHP の ini ファイルで error_log に値を指定するとそちらにエラーログが記録されることになっているが、CentOS のデフォルト状態ではそれだけでは出力されない。


php.ini

error_log = /var/log/php_error.log



よく見かける対策

php.ini で設定しても出力されないエラーログをちゃんと出すポイント! – oki2a24」などで記載されている対策が、touch コマンドでのファイルの作成と chown コマンドでの所有権の変更だ。

ただし、CentOS のデフォルトの状態ではこれでも出力されない。

touch /var/log/php_error.log

chown apache:apache /var/log/php_error.log


もう一つ必要な対応

実はデフォルトで有効になっている SELinux のせいで出力されない。

以下のコマンドで /var/log/httpd/error_log と同等のコンテクストを設定する。

chcon -t httpd_log_t /var/log/php_error.log

これで無事エラーログが出力されるようになる。

error_log で指定したログファイルにエラーログが出力されるようになると、Apache のログには出力されなくなる。


まとめ

以下のコマンドが必要。

touch /var/log/php_error.log

chcon -t httpd_log_t /var/log/php_error.log
chown apache. /var/log/php_error.log
chmod 600 /var/log/php_error.log


ログの例

Apache のエラーログと PHP のエラーログでは、メッセージ内容は同等だが日付等の表記が異なる。


Apache エラーログ

[Thu Jan 19 21:25:09.225123 2017] [:error] [pid 10594] [client 192.168.56.1:50552] PHP Notice:  Undefined variable: undefinedVariables in /var/www/html/index.php on line 4

[Thu Jan 19 21:25:09.225182 2017] [:error] [pid 10594] [client 192.168.56.1:50552] PHP Deprecated: Function set_magic_quotes_runtime() is deprecated in /var/www/html/index.php on line 5
[Thu Jan 19 21:25:09.225194 2017] [:error] [pid 10594] [client 192.168.56.1:50552] PHP Warning: ini_set() expects exactly 2 parameters, 0 given in /var/www/html/index.php on line 6
[Thu Jan 19 21:25:09.225202 2017] [:error] [pid 10594] [client 192.168.56.1:50552] PHP Fatal error: Call to undefined function undefined() in /var/www/html/index.php on line 7


PHP エラーログ

[19-Jan-2017 21:51:14 Asia/Tokyo] PHP Notice:  Undefined variable: undefinedVariables in /var/www/html/index.php on line 4

[19-Jan-2017 21:51:14 Asia/Tokyo] PHP Deprecated: Function set_magic_quotes_runtime() is deprecated in /var/www/html/index.php on line 5
[19-Jan-2017 21:51:14 Asia/Tokyo] PHP Warning: ini_set() expects exactly 2 parameters, 0 given in /var/www/html/index.php on line 6
[19-Jan-2017 21:51:14 Asia/Tokyo] PHP Fatal error: Call to undefined function undefined() in /var/www/html/index.php on line 7