在 Ubuntu 上开启 PHP 错误日志,通常需要从 PHP 配置(php.ini) 和 Web 服务器(Apache / Nginx) 两个方面来设置。下面按常见场景一步步说明。
先确认你用的是哪个 PHP 版本,以及是 CLI 还是 FPM。
php -v
php --ini
或:
php -i | grep "Loaded Configuration File"
常见路径:
/etc/php/8.x/apache2/php.ini/etc/php/8.x/fpm/php.ini/etc/php/8.x/cli/php.ini⚠️ Nginx 用户一定要改 fpm/php.ini,改 cli 是没用的。
编辑 php.ini:
sudo nano /etc/php/8.x/fpm/php.ini
(把 8.x 换成你的版本)
display_errors = Off
log_errors = On
error_reporting = E_ALL
error_log = /var/log/php/php_error.log
说明:
display_errors = Off:不在页面显示错误(生产环境推荐)log_errors = On:开启错误日志error_reporting = E_ALL:记录所有错误error_log:指定日志文件路径sudo mkdir -p /var/log/php
sudo chown www-data:www-data /var/log/php
sudo chmod 755 /var/log/php
sudo chown www-data:www-data /var/log/php
sudo chmod 755 /var/log/php
sudo systemctl restart apache2
sudo systemctl restart php8.x-fpm
sudo systemctl restart nginx
<?php
error_log("This is a test PHP error log");
trigger_error("Test error");
访问该页面后查看日志:
tail -f /var/log/php/php_error.log
如果看到内容,说明 ✅ 成功开启。
error_log 文件可写ls -l /var/log/php/php_error.log
php_error.logini_set('log_errors', 1);
ini_set('error_log', '/var/log/php/php_error.log');
error_reporting(E_ALL);
如果你愿意,可以告诉我:
我可以给你 精确到命令级别 的配置方案。