温馨提示×

为什么ubuntu php日志为空

小樊
35
2026-09-09 12:17:52
栏目: 编程语言

在 Ubuntu 上 PHP 日志为空,通常并不是“没错误”,而是日志根本没有被配置输出到你认为的地方。下面按常见原因逐一说明,并给出排查方法。


一、最常见原因:PHP 错误日志没开启

1. 检查 php.ini 配置

php --ini

查看:

  • CLI:/etc/php/8.x/cli/php.ini
  • Web(Apache/Nginx + PHP-FPM):/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

二、Web 服务器和 PHP-FPM 日志是分开的

1. PHP-FPM 有独立日志

/var/log/php8.x-fpm.log

这里记录:

  • PHP 启动错误
  • FPM 崩溃
  • 权限问题

2. Nginx / Apache 错误日志

/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

四、你访问的是 CLI,不是 Web

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

很多人改错配置文件。

✅ 验证当前生效配置:

<?php phpinfo(); ?>

搜索 error_log


五、错误级别太低,没触发日志

error_reporting = E_ALL

如果设成:

error_reporting = E_ERROR

很多 Notice / Warning 不会记录。


六、被框架“吞掉”了

  • Laravel / ThinkPHP / Symfony
    默认捕获异常,不写 php error_log

✅ 查看:

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 路径不对、权限不对,或你在看错日志文件。

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

  • Ubuntu 版本
  • PHP 版本
  • Web 服务(Nginx / Apache)
  • 用的框架(如果有)

我可以直接帮你定位到具体配置文件。

0