在 CentOS 上配置 PHP 日志,主要涉及 PHP-FPM 或 Apache/Nginx + PHP 两种常见场景。下面按常见情况详细说明。
先确认你使用的是哪种方式:
php -v
ps -ef | grep php
常见情况:
路径通常为:
/etc/php.ini
# 或
/etc/php/7.x/cli/php.ini
/etc/php/7.x/fpm/php.ini
关键配置项:
; 是否显示错误(生产环境建议 Off)
display_errors = Off
; 是否记录错误
log_errors = On
; 错误日志路径
error_log = /var/log/php/php_error.log
; 错误报告级别
error_reporting = E_ALL
✅ 生产环境推荐:
display_errors = Off
log_errors = On
error_reporting = E_ALL & ~E_NOTICE
路径示例:
/etc/php-fpm.conf
/etc/php-fpm.d/www.conf
error_log = /var/log/php-fpm/error.log
request_slowlog_timeout = 5s
slowlog = /var/log/php-fpm/slow.log
mkdir -p /var/log/php
mkdir -p /var/log/php-fpm
chown -R apache:apache /var/log/php
# 或 nginx
chown -R nginx:nginx /var/log/php
chown -R root:root /var/log/php-fpm
systemctl restart php-fpm
log_errors = On
error_log = /var/log/php/php_error.log
PHP 错误也可能写入:
/var/log/httpd/error_log
systemctl restart httpd
PHP 错误由 php-fpm 输出,Nginx 只记录访问和 fastcgi 错误:
/var/log/nginx/error.log
<?php
error_log("This is a test PHP error log");
undefined_function();
访问该 PHP 页面,然后查看:
tail -f /var/log/php/php_error.log
或:
tail -f /var/log/php-fpm/error.log
若日志写不进去:
setenforce 0
如果这样能写,说明是 SELinux 问题:
semanage fcontext -a -t httpd_log_t "/var/log/php(/.*)?"
restorecon -Rv /var/log/php
display_errors = Off
log_errors = On
error_log = /var/log/php/php_error.log
error_reporting = E_ALL & ~E_NOTICE
如果你愿意,可以告诉我:
我可以给你精确的一套配置方案。