温馨提示×

ubuntu php日志为何缺失

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

在 Ubuntu 上 PHP 日志“缺失”通常不是真的没产生,而是配置路径不对、权限不足、或错误被吞掉。下面按最常见原因逐一说明,并给出排查步骤。


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

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

运行方式 常见日志位置
CLI(命令行) 通常无默认日志,依赖 php.ini
Apache + mod_php Apache 错误日志
Nginx + PHP-FPM PHP-FPM 错误日志
php artisan / cron 取决于代码自身日志

二、最常见原因与解决办法

1️⃣ php.ini 没开启错误日志

检查:

php --ini

查看对应 php.ini:

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

如果 error_log 没设置:

  • CLI:错误直接输出到终端
  • FPM:可能写到 syslog 或根本没记录

✅ 解决:

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

修改 php.ini 后重启:

sudo systemctl restart php8.1-fpm   # 按版本

2️⃣ PHP-FPM 日志没开(Nginx 常见)

FPM 有自己日志:

/etc/php/8.1/fpm/php-fpm.conf

确认:

error_log = /var/log/php8.1-fpm.log
log_level = notice

重启:

sudo systemctl restart php8.1-fpm

3️⃣ 权限问题(最常见“看不见日志”的原因)

即使日志写进去了,也可能:

  • 文件不存在
  • www-data 没权限写

检查:

ls -l /var/log/php

如果没文件:

sudo touch /var/log/php/php-error.log
sudo chown www-data:www-data /var/log/php/php-error.log

4️⃣ 错误被框架 / 代码吞了

例如:

  • Laravel 关闭了 debug
  • try-catch 捕获后没记录
  • 自定义 error handler

✅ 临时测试:

<?php
error_log("test log");
trigger_error("test error", E_USER_WARNING);

看是否出现在日志里。


5️⃣ 错误级别设置过高

error_reporting = E_ALL
display_errors = Off

否则:

  • Notice / Warning 不记录
  • 只记录 Fatal

6️⃣ systemd 吞了日志(CLI / cron)

如果是命令行 PHP:

journalctl -u php8.1-fpm

或:

php script.php 2>&1 | tee log.txt

三、快速自查清单 ✅

php -i | grep error_log
ls -l /var/log/php
sudo systemctl status php8.1-fpm
tail -f /var/log/php8.1-fpm.log

四、如果你愿意

你可以直接告诉我:

  • Ubuntu 版本
  • PHP 版本
  • Apache 还是 Nginx
  • Web 还是 CLI 缺失日志

我可以给你精确到文件的配置示例。

0 踩