在 Ubuntu 上 PHP 日志为空,通常并不是“没错误”,而是日志根本没有被配置输出到你认为的地方。下面按常见原因逐一说明,并给出排查方法。
php --ini
查看:
/etc/php/8.x/cli/php.ini/etc/php/8.x/fpm/php.ini关键配置:
display_errors = Off
log_errors = On
error_log = /var/log/php/php-error.log
如果:
log_errors = Off → 不会有日志error_log 为空 → 日志可能写到 syslog 或根本不写✅ 修改后重启:
sudo systemctl restart php8.x-fpm
/var/log/php8.x-fpm.log
这里记录:
/var/log/nginx/error.log
/var/log/apache2/error.log
⚠️ 很多“PHP 报错”其实在这里。
例如:
error_log = /var/log/php/php-error.log
但:
ls -ld /var/log/php
不存在或 www-data 无写权限
✅ 修复:
sudo mkdir -p /var/log/php
sudo chown www-data:www-data /var/log/php
sudo touch /var/log/php/php-error.log
sudo chown www-data:www-data /var/log/php/php-error.log
php script.php → 用 cli/php.ini很多人改错配置文件。
✅ 验证当前生效配置:
<?php phpinfo(); ?>
搜索 error_log
error_reporting = E_ALL
如果设成:
error_reporting = E_ERROR
很多 Notice / Warning 不会记录。
✅ 查看:
storage/logs/laravel.log
或对应框架日志目录
# 1. 当前 PHP 配置
php -i | grep error_log
# 2. 日志文件是否存在
sudo ls -l /var/log/php/
# 3. 权限
ps aux | grep php-fpm
# 4. 手动触发错误
<?php
error_log("test php log");
?>
Ubuntu 上 PHP 日志为空,90% 是因为:log_errors 没开、error_log 路径不对、权限不对,或你在看错日志文件。
如果你愿意,可以告诉我:
我可以直接帮你定位到具体配置文件。