尽管php.ini设置,PHP仍未记录脚本错误

时间:2017-02-14 23:27:17

标签: php nginx fpm

我正在使用PHP-FPM和NGINX,我无法使错误日志与PHP-FPM一起正常工作。

这是我的php.ini,相关部分:

error_reporting = 'E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE'
error_log = /var/www/logs/php-scripts.error.log
log_errors = 'On'
display_errors = 'Off'
display_startup_errors = 'Off'
html_errors =  'Off'

open_basedir = /var/www/html/:/var/www/.tmp/:/var/www/logs/
upload_tmp_dir = /var/www/.tmp

www-pool.comf的相关片段(由PHP-FPM主进程加载的配置):

listen = 9000
user = www-data
group = www-data
request_slowlog_timeout = 10
slowlog = /var/log/php-fpm/$pool.slow.log
chdir = /var/www/html
access.log = /var/log/php-fpm/$pool.access.log
catch_workers_output = Yes

/var/www/logs/可由www-data写入 - 用户PHP-FPM和Web服务器正在运行。

现在,如果我在index.php中执行此操作:

error_log('Some error');

错误消息可以毫无问题地找到/var/www/logs/php-scripts.error.log的路径。但是,当我尝试触发错误时:

trigger_error('Some error', E_USER_WARNING);

错误未记录在日志文件中。此外,当我启动故意破坏的PHP脚本时,屏幕上出现500内部服务器错误,但没有任何内容记录到PHP错误日志中,例如:

// index.php
<?php
echo 'Trigger error'

注意上面缺少的; - 应该在错误日志中报告错误,我只得到500内部服务器错误而日志中没有输出。

你能帮忙吗?感谢。

1 个答案:

答案 0 :(得分:1)

从error_reporting中删除引号,以及其他设置,你的php.ini应如下所示:

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE
error_log = /var/www/logs/php-scripts.error.log
log_errors = On
display_errors = Off
display_startup_errors = Off
html_errors =  Off

open_basedir = /var/www/html/:/var/www/.tmp/:/var/www/logs/
upload_tmp_dir = /var/www/.tmp