在 CentOS 上开启 PHP 日志,主要取决于你使用的是 PHP-FPM 还是 Apache + mod_php。下面分情况说明,适用于 CentOS 7 / 8 / Stream。
先确认 PHP 是以哪种方式运行的:
php -v
ps -ef | grep php
常见两种:
编辑 PHP 配置文件:
vim /etc/php.ini
确保以下配置存在并取消注释:
display_errors = Off
log_errors = On
error_reporting = E_ALL
error_log = /var/log/php/php_error.log
✅ 生产环境一定要
display_errors = Off
mkdir -p /var/log/php
chown -R apache:apache /var/log/php # Apache
# 或
chown -R nginx:nginx /var/log/php # Nginx
chmod 755 /var/log/php
编辑 PHP-FPM 配置:
vim /etc/php-fpm.conf
或:
vim /etc/php-fpm.d/www.conf
确认:
php_admin_value[error_log] = /var/log/php/php_fpm_error.log
php_admin_value[log_errors] = On
systemctl restart php-fpm
vim /etc/php.ini
log_errors = On
error_log = /var/log/php/php_error.log
PHP 错误也会写入 Apache 日志:
tail -f /var/log/httpd/error_log
systemctl restart httpd
Nginx 本身不处理 PHP,PHP 错误在 php-fpm 日志 中。
查看 Nginx 错误日志:
tail -f /var/log/nginx/error.log
创建一个测试文件:
<?php
error_log("PHP log test");
undefined_function();
访问该页面,然后查看日志:
tail -f /var/log/php/php_error.log
SELinux 排查:
setenforce 0 # 临时关闭测试
若解决,需配置 SELinux:
semanage fcontext -a -t httpd_log_t "/var/log/php(/.*)?"
restorecon -Rv /var/log/php
✅ CentOS + PHP-FPM 推荐配置
log_errors = On
error_log = /var/log/php/php_error.log
mkdir /var/log/php
chown nginx:nginx /var/log/php
systemctl restart php-fpm
如果你愿意,可以告诉我:
我可以给你 精确到路径 的配置方案。