温馨提示×

ubuntu php日志丢失怎么查

小樊
46
2026-10-26 23:50:13
栏目: 编程语言

在 Ubuntu 上 PHP 日志“丢失/看不到” 通常是因为日志位置不对、权限问题、或被临时清空。可以按下面步骤系统排查。


一、先确认 PHP 是哪种运行方式

不同方式,日志位置完全不同:

php -v

常见情况:

  • CLI(命令行):php index.php
  • PHP-FPM(Nginx/Apache 常见)
  • Apache mod_php

二、查看 php.ini 中的日志配置

php --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 为空:

  • CLI:日志会写到 stderr
  • FPM:通常由 php-fpm.conf 控制

三、PHP-FPM 日志(最常见丢失原因)

1. 查看 FPM 配置

php-fpm -i | grep error_log

或:

grep -R "error_log" /etc/php/*/fpm/

一般路径:

/var/log/php*/fpm.log
/var/log/php*/php-fpm.log

2. 重启并测试

sudo systemctl restart php*-fpm

四、Web 服务器日志(Nginx / Apache)

Nginx

/var/log/nginx/error.log
/var/log/nginx/access.log

测试:

tail -f /var/log/nginx/error.log

Apache

/var/log/apache2/error.log

五、日志文件“存在但为空 / 丢失”

1. 文件被删但未重建

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

2. logrotate 清空

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 / 容器情况(如果你在用)

日志可能在:

docker logs 容器名

而不是宿主机。


快速排查清单 ✅

  • [ ] 确认 PHP 运行方式(CLI / FPM)
  • [ ] 查 php.ini 的 error_log
  • [ ] 查 php-fpm / nginx / apache 日志
  • [ ] 检查文件是否存在 & 权限
  • [ ] 用 error_log() 做测试

如果你愿意,可以告诉我:

  • Ubuntu 版本
  • PHP 版本
  • Nginx / Apache / CLI
  • 日志“丢失”是 完全没生成 还是 以前有现在没了

我可以给你更精确的命令。

0 踩