search
LoginSignup
22

More than 5 years have passed since last update.

posted at

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

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
22