插件窝 干货文章 Nginx中如何开启php报错功能

Nginx中如何开启php报错功能

PHP errors log Nginx 355    来源:    2025-04-27

在Nginx中开启PHP报错功能的方法

要在Nginx环境中开启PHP报错功能,需要同时配置Nginx和PHP的设置。以下是详细步骤:

1. 修改PHP配置文件

对于PHP-FPM (通常位于以下位置之一):

  • /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

2. 修改PHP-FPM池配置 (可选)

通常在 /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

3. 修改Nginx虚拟主机配置

在对应的站点配置文件中(如 /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";
    }
}

4. 重启服务使配置生效

# 重启PHP-FPM (根据你的PHP版本)
sudo service php7.x-fpm restart  # 或 systemctl restart php-fpm

# 重启Nginx
sudo service nginx restart       # 或 systemctl restart nginx

5. 验证设置

创建一个测试PHP文件(如info.php):

<?php
// 故意制造一个错误
echo $undefined_variable;
phpinfo();
?>

访问该文件,应该能看到错误信息。

注意事项

  1. 生产环境安全:在生产环境中,建议关闭display_errors,只开启log_errors,将错误记录到日志文件而非显示给用户。

  2. 日志文件权限:确保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
    
  3. PHP版本差异:上述路径中的7.x需要替换为你实际使用的PHP版本号。

通过以上步骤,你应该能够在Nginx环境中成功开启PHP错误显示功能。