在 Ubuntu 上配置 PHP 错误显示/记录,通常分为 PHP-FPM(Nginx 常用) 和 Apache + mod_php 两种场景。下面按常见情况一步步说明。
先找到 php.ini 所在路径:
php -i | grep "Loaded Configuration File"
常见路径:
/etc/php/8.x/cli/php.ini(CLI)/etc/php/8.x/fpm/php.ini(PHP-FPM,Nginx 常用)/etc/php/8.x/apache2/php.ini(Apache)⚠️ Web 环境一定要改 fpm 或 apache2 目录下的 php.ini,而不是 cli 的
sudo nano /etc/php/8.x/fpm/php.ini
(根据你的 PHP 版本调整)
display_errors = On
display_startup_errors = On
error_reporting = E_ALL
含义:
display_errors:是否在页面显示错误error_reporting:错误级别(开发建议 E_ALL)✅ 开发环境推荐
display_errors = On
error_reporting = E_ALL
❌ 生产环境推荐
display_errors = Off
error_reporting = E_ALL
log_errors = On
error_log = /var/log/php/error.log
sudo mkdir -p /var/log/php
sudo chown www-data:www-data /var/log/php
sudo chmod 755 /var/log/php
sudo systemctl restart php8.x-fpm
sudo systemctl restart apache2
创建测试文件 info.php:
<?php
echo $undefinedVariable;
访问页面:
查看日志:
tail -f /var/log/php/error.log
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
| 问题 | 原因 |
|---|---|
| 改了 php.ini 不生效 | 改错 ini 文件 |
| 页面不显示错误 | display_errors=Off |
| 日志不生成 | 目录无权限 |
| 修改后没重启 | FPM/Apache 未重启 |
display_errors = On
error_reporting = E_ALL
log_errors = On
display_errors = Off
error_reporting = E_ALL
log_errors = On
error_log = /var/log/php/error.log
如果你能告诉我:
我可以给你一份 完全针对你服务器的配置示例。