在 Ubuntu 上定位 PHP 日志,通常分 PHP 本身错误日志 和 Web 服务器(Nginx/Apache)日志 两类。下面按常见场景给你梳理。
php --ini
或(CLI 与 FPM 可能不同):
php -i | grep "Loaded Configuration File"
grep -E "log_errors|error_log" /etc/php/*/fpm/php.ini
常见结果:
log_errors = On
error_log = /var/log/php/php-error.log
如果没有
error_log,PHP 错误会写到 Web 服务器日志里。
/var/log/php/php-error.log
/var/log/php7.x-fpm.log
/var/log/apache2/error.log
/var/log/nginx/error.log
/var/log/php/php-error.log
tail -f /var/log/php/php-error.log
或同时看 Nginx:
tail -f /var/log/nginx/error.log
ini_set('display_errors', 1);
error_reporting(E_ALL);
ls -l /var/log/php/
如果目录不存在:
sudo mkdir -p /var/log/php
sudo chown www-data:www-data /var/log/php
sudo systemctl restart php-fpm
# 或
sudo systemctl restart php7.4-fpm
| 问题 | 原因 |
|---|---|
| 看不到错误 | log_errors=Off |
| 日志为空 | 错误被框架 catch |
| 生产环境无日志 | display_errors=Off 且未配置 error_log |
| CLI 与 Web 日志不同 | 使用了不同 php.ini |
如果你能告诉我:
我可以直接给你一条精准命令。