温馨提示×

为何ubuntu php日志缺失

小樊
39
2026-10-18 04:37:11
栏目: 编程语言

在 Ubuntu 上出现 PHP 日志缺失(看不到错误日志、访问不到日志文件)是常见现象,通常不是“PHP 坏了”,而是配置或运行方式没对上。下面按最常见原因逐一说明。


一、PHP 错误日志根本没开启(最常见)

1. 没打开 log_errors

检查 php.ini(注意 CLI 和 FPM 是两套):

php --ini

常见路径:

  • /etc/php/8.x/cli/php.ini
  • /etc/php/8.x/fpm/php.ini

确认以下配置:

log_errors = On
error_log = /var/log/php/php-error.log

如果 error_log 没写,PHP 可能:

  • 交给 Web 服务器(Apache/Nginx)
  • 或根本不记录

修改后重启:

sudo systemctl restart php8.x-fpm

二、Web 服务器没配置 PHP 日志

Apache + mod_php

错误可能写在 Apache 日志:

/var/log/apache2/error.log

Nginx + PHP-FPM

PHP 错误 不会进 Nginx access log,只会在:

  • php-fpm 错误日志
  • 或 php.ini 指定的 error_log

检查:

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

三、日志目录不存在或无权限(非常常见)

Ubuntu 默认 没有 /var/log/php

sudo mkdir -p /var/log/php
sudo chown www-data:www-data /var/log/php

否则 PHP 写不进去,直接静默失败


四、你用的是 CLI,但看的是 Web 日志

  • php script.php → 用 cli/php.ini
  • 浏览器访问 → 用 fpm/php.ini

很多人改错文件,导致“明明配了却没日志”。


五、display_errors 开着,但 log 没开

display_errors = On
log_errors = Off

结果:

  • 浏览器能看到错误
  • 日志文件永远为空

六、catch_workers_output 没开(PHP-FPM)

如果 PHP 崩溃或被 kill,可能不写日志。

在 www.conf:

catch_workers_output = yes

七、错误级别太低

error_reporting = E_ALL

否则 Notice / Warning 不会记录


八、快速自检清单 ✅

# 1. 当前 PHP 用哪个 ini
php --ini

# 2. 错误日志是否开启
php -i | grep error_log

# 3. 日志目录是否存在
ls -ld /var/log/php

# 4. PHP-FPM 是否在跑
systemctl status php8.x-fpm

九、最小可用配置(推荐)

log_errors = On
error_log = /var/log/php/php-error.log
error_reporting = E_ALL
display_errors = Off

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

  • Ubuntu 版本
  • PHP 版本
  • Apache 还是 Nginx
  • CLI 还是 Web 场景

我可以直接帮你定位“为什么你的日志就是没有”。

0 踩