温馨提示×

centos php日志为何不生成

小樊
41
2026-09-06 06:15:40
栏目: 编程语言

在 CentOS 上 PHP 日志“不生成”通常并不是 PHP 本身坏了,而是配置、权限或路径的问题。下面按最常见原因逐一排查。


一、先确认你指的是哪种“PHP 日志”

PHP 常见日志有三类:

  1. PHP 错误日志(php.ini 中配置)
  2. PHP-FPM 日志
  3. Web 服务器访问/错误日志(Apache / Nginx)

很多人说的“PHP 日志不生成”,其实是指 PHP 报错没写进文件


二、检查 php.ini 是否正确配置

1. 找到使用的 php.ini

php --ini

或(Web 环境)

phpinfo();

2. 关键配置项

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

⚠️ 常见错误:

  • log_errors = Off
  • error_log 被注释掉
  • 改了 CLI 的 php.ini,但 Web 用的是另一个

三、日志目录权限问题(最常见)

1. 目录必须存在

ls -ld /var/log/php

如果不存在:

mkdir -p /var/log/php

2. 目录属主要对

PHP 一般是 php-fpm 用户 写日志:

ps aux | grep php-fpm

常见用户:

  • apache
  • nginx
  • www-data

授权示例:

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

四、SELinux 导致日志写不进去(CentOS 特有)

CentOS 默认开启 SELinux,这是非常常见但容易被忽略的原因

检查

getenforce

如果是 Enforcing

临时验证

setenforce 0

再测试是否生成日志。

永久解决(推荐)

semanage fcontext -a -t httpd_log_t "/var/log/php(/.*)?"
restorecon -Rv /var/log/php

五、PHP-FPM 日志没开

如果你用的是 PHP-FPM:

vi /etc/php-fpm.conf

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

检查:

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

重启:

systemctl restart php-fpm

六、Web 服务器屏蔽了错误

Nginx

fastcgi_intercept_errors on;

可能导致错误不暴露。

Apache

php_flag log_errors on

七、测试日志是否真的能写

创建一个测试脚本:

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

访问页面或 CLI 执行:

php test.php

八、快速排查清单 ✅

  • [ ] php.ini 中 log_errors = On
  • [ ] error_log 路径存在
  • [ ] 目录权限 & 属主正确
  • [ ] SELinux 未拦截
  • [ ] 使用的是 Web 对应的 php.ini
  • [ ] PHP-FPM 已重启

如果你愿意,可以贴出:

  • CentOS 版本
  • PHP 版本
  • 使用的 Web 服务(Nginx / Apache)
  • php.ini 相关配置

我可以直接帮你定位是哪一步卡住了。

0