温馨提示×

ubuntu php日志为何不生成

小樊
45
2026-10-03 12:41:46
栏目: 编程语言

在 Ubuntu 上 PHP 日志“不生成”是很常见的问题,通常不是 PHP 本身坏掉了,而是配置、权限或运行方式导致的。下面按最常见原因逐步排查。


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

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

  • CLI(命令行):php script.php
  • PHP-FPM(Nginx / Apache + FPM)
  • Apache mod_php
  • PHP 内置服务器

二、最常见原因 1:php.ini 日志配置没开

1️⃣ 找到正在使用的 php.ini

php --ini

或(FPM):

php-fpm -i | grep php.ini

2️⃣ 检查以下配置

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

⚠️ 注意:

  • error_log 为空 → 日志会写到 Web 服务器日志
  • display_errors 只影响页面显示,不影响日志

修改后重启:

sudo systemctl restart php-fpm
# 或
sudo systemctl restart apache2

三、最常见原因 2:日志目录不存在 / 没权限(非常重要)

示例

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

但目录不存在:

ls -ld /var/log/php

解决

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

PHP 运行用户通常是:

  • www-data(Apache / Nginx + FPM)

四、最常见原因 3:你以为的“错误”没触发日志

以下情况 不会写日志:

  • 语法错误(CLI 会直接报错)
  • try/catch 捕获了异常
  • error_reporting(0)
  • @ 抑制错误

测试代码:

<?php
error_reporting(E_ALL);
ini_set('display_errors', 0);
trigger_error("test php log", E_USER_WARNING);

五、Nginx + PHP-FPM 的特殊情况

PHP 错误不会出现在 Nginx 日志

Nginx 只记:

FastCGI sent in stderr

查看:

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

六、Apache + PHP 的情况

日志可能在:

/var/log/apache2/error.log

检查:

grep php /var/log/apache2/error.log

七、快速自检清单 ✅

# 1. 当前 php.ini
php --ini

# 2. 日志配置
php -i | grep error_log

# 3. 日志文件权限
ls -l /var/log/php/

# 4. Web 服务日志
tail -f /var/log/nginx/error.log
tail -f /var/log/apache2/error.log

八、如果你愿意,我可以更精准帮你

你可以直接贴出:

  1. Ubuntu 版本
  2. PHP 版本
  3. Web 服务器(Nginx / Apache)
  4. 你期望日志生成的位置
  5. 当前 php.ini 中 log_errors / error_log 的值

我可以一步一步帮你定位到“为什么一个字都没写”。

0 踩