温馨提示×

centos php日志为啥为空

小樊
49
2026-09-18 06:29:30
栏目: 编程语言

在 CentOS 上 PHP 日志为空,通常不是“没报错”,而是日志根本没配置输出到你想看的地方。下面按最常见原因逐一说明,你可以对照排查。


一、先确认:你看的是哪个“日志”

PHP 常见日志有 3 类,位置完全不同:

  1. PHP-FPM 错误日志(最常见)
  2. PHP 自身 error_log
  3. Web 服务器日志(Nginx / Apache)

二、PHP-FPM 日志为空(最常见)

1️⃣ php-fpm 没开日志

查看 php-fpm 配置:

php-fpm -i | grep "error_log"
# 或
grep error_log /etc/php-fpm.conf
grep error_log /etc/php-fpm.d/www.conf

正常应有:

error_log = /var/log/php-fpm/error.log

如果没有:

vim /etc/php-fpm.d/www.conf

添加或修改:

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

重启:

systemctl restart php-fpm

2️⃣ 日志文件存在但没权限

ls -l /var/log/php-fpm/

如果 php-fpm 用户(通常是 apache / nginx / www-data)无写权限:

chown nginx:nginx /var/log/php-fpm
chmod 755 /var/log/php-fpm

三、PHP 代码报错但日志为空

3️⃣ php.ini 关闭了错误日志

php --ini

编辑:

vim /etc/php.ini

确保:

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

创建日志目录:

mkdir -p /var/log/php
chown nginx:nginx /var/log/php

重启 php-fpm / web 服务。


4️⃣ 致命错误但被 Web 服务器吞了

例如:

  • 内存超限
  • 语法错误
  • 超时

这些不会写 PHP 日志,而是:

Nginx

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

Apache

tail -f /var/log/httpd/error_log

四、你以为是“空”,其实是“没触发”

5️⃣ 没有真正发生错误

测试一下:

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

如果连 error_log 都不出现,说明 日志配置没生效。


五、CentOS 特有坑(SELinux)

6️⃣ SELinux 阻止写日志

getenforce

如果是 Enforcing:

setsebool -P httpd_can_network_connect on
restorecon -Rv /var/log/php

或临时验证:

setenforce 0

六、快速自查清单 ✅

php -i | grep error_log
ls -l /var/log/php*
tail -f /var/log/php-fpm/error.log
tail -f /var/log/nginx/error.log
systemctl status php-fpm

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

  • CentOS 版本(7 / 8 / Stream)
  • PHP 版本
  • 用的是 Nginx 还是 Apache
  • 日志路径你当前在看哪一个

我可以直接给你一份精确配置。

0 踩