在 Ubuntu 上 PHP 日志“丢失/看不到” 通常是因为日志位置不对、权限问题、或被临时清空。可以按下面步骤系统排查。
不同方式,日志位置完全不同:
php -v
常见情况:
php index.phpphp --ini
然后查看对应 php.ini:
grep -E "error_log|log_errors|display_errors" /etc/php/*/*/php.ini
重点关注:
log_errors = On
error_log = /var/log/php/php_error.log
如果 error_log 为空:
php-fpm.conf 控制php-fpm -i | grep error_log
或:
grep -R "error_log" /etc/php/*/fpm/
一般路径:
/var/log/php*/fpm.log
/var/log/php*/php-fpm.log
sudo systemctl restart php*-fpm
/var/log/nginx/error.log
/var/log/nginx/access.log
测试:
tail -f /var/log/nginx/error.log
/var/log/apache2/error.log
ls -l /var/log/php*
如果不存在:
sudo mkdir -p /var/log/php
sudo touch /var/log/php/php_error.log
sudo chown www-data:www-data /var/log/php/php_error.log
cat /etc/logrotate.d/php*
可能是被压缩或删除。
ps aux | grep php-fpm
确认运行用户(通常是 www-data)
修复权限:
sudo chown -R www-data:www-data /var/log/php
sudo chmod 755 /var/log/php
在 PHP 文件中:
error_log("test log");
或:
ini_set('error_log', '/tmp/php_debug.log');
error_log("debug");
然后:
tail -f /tmp/php_debug.log
日志可能在:
docker logs 容器名
而不是宿主机。
如果你愿意,可以告诉我:
我可以给你更精确的命令。