尽管 php.ini 设置,PHP 不记录脚本错误
PHP not logging script errors in spite of php.ini settings
我正在将 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 并且网络服务器是 运行 as.
现在,如果我在 index.php
中执行此操作:
error_log('Some error');
错误消息毫无问题地找到了/var/www/logs/php-scripts.error.log
。但是,当我尝试像这样触发错误时:
trigger_error('Some error', E_USER_WARNING);
错误未记录在日志文件中。此外,当我启动故意破坏的 PHP 脚本时,我在屏幕上看到 500 Internal Server Error,但 PHP 错误日志中没有任何记录,例如:
// index.php
<?php
echo 'Trigger error'
注意上面缺少的 ;
- 它应该在错误日志中报告错误,我只收到 500 Internal Server Error 并且日志中没有输出。
你能帮忙吗?谢谢。
删除 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
我正在将 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 并且网络服务器是 运行 as.
现在,如果我在 index.php
中执行此操作:
error_log('Some error');
错误消息毫无问题地找到了/var/www/logs/php-scripts.error.log
。但是,当我尝试像这样触发错误时:
trigger_error('Some error', E_USER_WARNING);
错误未记录在日志文件中。此外,当我启动故意破坏的 PHP 脚本时,我在屏幕上看到 500 Internal Server Error,但 PHP 错误日志中没有任何记录,例如:
// index.php
<?php
echo 'Trigger error'
注意上面缺少的 ;
- 它应该在错误日志中报告错误,我只收到 500 Internal Server Error 并且日志中没有输出。
你能帮忙吗?谢谢。
删除 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