温馨提示×

ubuntu php日志为空为何

小樊
45
2026-10-09 10:12:16
栏目: 编程语言

在 Ubuntu 上 PHP 日志为空,通常不是“没出错”,而是日志根本没写对地方,或被配置关掉了。下面按最常见原因逐一说明,并给出排查方法。


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

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

  • CLI(命令行):php script.php
  • Apache + mod_php
  • Nginx + PHP-FPM

二、最常见原因(80% 情况)

1️⃣ log_errors 被关闭

PHP 默认可能不会写日志。

检查:

php -i | grep log_errors

如果看到:

log_errors => Off

修改 php.ini:

log_errors = On
error_log = /var/log/php/php_errors.log

重启服务:

# Apache
sudo systemctl restart apache2

# PHP-FPM
sudo systemctl restart php8.1-fpm

2️⃣ error_log 路径不存在或不可写

例如:

error_log = /var/log/php/errors.log

但目录不存在。

解决:

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

3️⃣ 使用的是 PHP-FPM,但看了错误的日志

PHP-FPM 有自己的日志,不在 php.ini 里。

查看:

sudo tail -f /var/log/php8.1-fpm.log

或在 pool 配置中:

catch_workers_output = yes
php_admin_value[error_log] = /var/log/php/fpm-error.log
php_admin_value[log_errors] = On

4️⃣ 错误级别太低(没记录)

error_reporting = E_ALL
display_errors = Off

5️⃣ Nginx 把错误吞了

Nginx 不显示 PHP 错误,只报 500。

检查:

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

6️⃣ 脚本里用了 @ 抑制错误

@file_get_contents('xxx');

这种错误 不会写日志。


7️⃣ 实际上“没出错”

日志为空 ≠ 有问题
可以故意测试:

<?php
error_log("test log");
nonexistent_function();

三、快速自检清单 ✅

php -i | grep -E "error_log|log_errors|error_reporting"
ls -l /var/log/php
sudo tail -f /var/log/php/*.log

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

  • Ubuntu 版本
  • PHP 版本
  • Web 服务器(Apache / Nginx)
  • 运行方式(CLI / 网页)

我可以直接帮你定位是哪一层的问题。

0 踩