要在Nginx环境中开启PHP报错功能,需要同时配置Nginx和PHP的设置。以下是详细步骤:
/etc/php/7.x/fpm/php.ini
(根据PHP版本号变化)/etc/php.ini
/usr/local/etc/php/php.ini
找到并修改以下参数:
display_errors = On
display_startup_errors = On
error_reporting = E_ALL
log_errors = On
error_log = /var/log/php_errors.log
通常在 /etc/php/7.x/fpm/pool.d/www.conf
中:
php_flag[display_errors] = on
php_admin_value[error_log] = /var/log/php_errors.log
php_admin_flag[log_errors] = on
在对应的站点配置文件中(如 /etc/nginx/sites-available/your-site
),确保fastcgi参数包含错误显示设置:
server {
# ...其他配置...
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.x-fpm.sock;
# 添加以下参数
fastcgi_param PHP_VALUE "display_errors=On";
fastcgi_param PHP_VALUE "error_reporting=E_ALL";
}
}
# 重启PHP-FPM (根据你的PHP版本)
sudo service php7.x-fpm restart # 或 systemctl restart php-fpm
# 重启Nginx
sudo service nginx restart # 或 systemctl restart nginx
创建一个测试PHP文件(如info.php
):
<?php
// 故意制造一个错误
echo $undefined_variable;
phpinfo();
?>
访问该文件,应该能看到错误信息。
生产环境安全:在生产环境中,建议关闭display_errors
,只开启log_errors
,将错误记录到日志文件而非显示给用户。
日志文件权限:确保PHP进程有权限写入错误日志文件:
sudo touch /var/log/php_errors.log
sudo chown www-data:www-data /var/log/php_errors.log
sudo chmod 644 /var/log/php_errors.log
PHP版本差异:上述路径中的7.x
需要替换为你实际使用的PHP版本号。
通过以上步骤,你应该能够在Nginx环境中成功开启PHP错误显示功能。