Ubuntu PHP错误日志配置调整指南
PHP的配置文件路径因运行模式(命令行、Apache、PHP-FPM)而异,可通过以下命令快速定位:
php --ini
输出结果会显示Loaded Configuration File(加载的配置文件路径),常见路径包括:
/etc/php/{version}/cli/php.ini(如/etc/php/8.2/cli/php.ini)/etc/php/{version}/apache2/php.ini/etc/php/{version}/fpm/php.ini(如/etc/php/8.2/fpm/php.ini)sudo cp /etc/php/{version}/fpm/php.ini /etc/php/{version}/fpm/php.ini.bak
用文本编辑器(如nano)打开对应的php.ini文件,调整以下核心参数:
; 启用所有错误报告(生产环境可调整为E_ERROR|E_WARNING等)
error_reporting = E_ALL
; 关闭浏览器直接显示错误(防止敏感信息泄露,生产环境必须为Off)
display_errors = Off
; 开启错误日志记录功能
log_errors = On
; 指定错误日志文件路径(需确保PHP进程有写入权限)
error_log = /var/log/php_errors.log
参数说明:
error_reporting:控制记录哪些级别的错误(E_ALL表示所有错误,生产环境建议缩小范围);display_errors:设为Off可避免在浏览器中暴露错误详情(开发环境可设为On调试);log_errors:设为On表示将错误写入日志文件;error_log:自定义日志路径(默认路径为/var/log/php_errors.log,需手动创建并授权)。若指定的日志路径不存在,需手动创建并赋予PHP进程(通常为www-data用户)写入权限:
sudo touch /var/log/php_errors.log
sudo chown www-data:www-data /var/log/php_errors.log
sudo chmod 640 /var/log/php_errors.log
根据使用的Web服务器类型,重启对应服务:
sudo systemctl restart apache2
sudo systemctl restart php{version}-fpm # 如php8.2-fpm
sudo systemctl restart nginx
创建测试脚本(如/var/www/html/test.php),内容如下:
<?php
// 故意触发错误(如调用未定义函数)
non_existent_function();
?>
访问该脚本(如http://your_server_ip/test.php),若配置正确,浏览器会返回空白页面(display_errors=Off),而日志文件/var/log/php_errors.log中会记录错误详情:
tail -f /var/log/php_errors.log # 实时查看日志
日志示例:
[20-Oct-2025 10:00:00 UTC] PHP Fatal error: Uncaught Error: Call to undefined function non_existent_function() in /var/www/html/test.php:2
Stack trace:
#0 {main}
thrown in /var/www/html/test.php on line 2
若无法修改php.ini,可通过Web服务器配置动态调整错误日志设置:
<Directory /var/www/html>
php_value error_reporting E_ALL
php_value display_errors Off
php_value log_errors On
php_value error_log /var/log/php_errors.log
</Directory>
location ~ \.php$块中添加):location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php{version}-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PHP_VALUE "error_reporting=E_ALL display_errors=Off log_errors=On error_log=/var/log/php_errors.log";
}
修改后需重启对应服务。
通过以上步骤,可完成Ubuntu环境下PHP错误日志的配置调整,确保错误信息被正确记录,便于后续排查问题。