php-fpm错误日志位置以配置为准:centos默认在/var/log/php-fpm/error.log,ubuntu默认为/var/log/php*-fpm.log;若error_log为空则落至journalctl,且可能被php.ini的error_log设置覆盖。

CentOS 和 Ubuntu 下 PHP 日志路径本质一致,但默认配置、服务结构和常见部署方式导致实际落盘位置不同 —— 不是系统强制规定,而是由 Web 服务器 + PHP 运行模式共同决定。
PHP-FPM 错误日志在哪查(error_log)
两者都默认使用 php-fpm 管理 PHP 进程,但配置文件路径和默认日志指向有差异:
- CentOS:主配置通常在
/etc/php-fpm.conf,池配置(如www.conf)在/etc/php-fpm.d/;默认error_log值多为/var/log/php-fpm/error.log或/var/log/php-fpm/www-error.log - Ubuntu:配置文件集中在
/etc/php/*/fpm/(*是版本号,如8.2),www.conf中error_log默认指向/var/log/php8.2-fpm.log(版本嵌入文件名) - 无论哪边,真实路径以
grep error_log /etc/php-fpm.d/www.conf输出为准,别信“默认”,只信配置 - 如果
error_log值为空或注释掉,PHP-FPM 会退回到 systemd journal,此时必须用journalctl -u php*-fpm -f查
Web 服务器错误日志是否包含 PHP 错误(Apache vs Nginx)
PHP 本身不直接写 Web 服务器日志,但错误是否透传取决于集成方式:
- Apache + mod_php(已淘汰但仍有遗留):PHP 错误直接混入
/var/log/httpd/error_log(CentOS)或/var/log/apache2/error.log(Ubuntu) - Apache/Nginx + PHP-FPM:Web 服务器只记录 500、502、connect refused 类错误;真正的 PHP 执行错误(ParseError、Fatal error)只出现在
php-fpm自己的error_log里,access_log里看不到 - Ubuntu 的 Nginx 默认不启用
fastcgi_intercept_errors on,导致 500 错误被静默吞掉,看起来“没日志”——要手动打开并配error_page 500 /50x.html才能触发记录
php.ini 中 error_log 配置优先级高于 PHP-FPM
这个容易被忽略:如果 php.ini 显式设置了 error_log = /tmp/php_errors.log,那它会覆盖 PHP-FPM 配置里的 error_log,且对所有运行方式(CLI、FPM、Apache 模块)生效:
- CentOS:
php --ini显示Loaded Configuration File,通常是/etc/php.ini - Ubuntu:
php --ini可能返回多个路径(/etc/php/8.2/cli/php.ini和/etc/php/8.2/fpm/php.ini),FPM 场景下必须看fpm子目录下的那个 - 若
error_log设为syslog,日志会进/var/log/messages(CentOS)或/var/log/syslog(Ubuntu),而不是文件 - 权限问题常导致写入失败:确保
php-fpmworker 用户(如apache或www-data)对目标目录有w权限,否则静默丢弃
真正麻烦的不是路径不同,而是你查了 /var/log/nginx/error.log 却发现没 PHP 错误,又去翻 php-fpm 配置却发现 error_log 被 php.ini 覆盖了,最后才发现 www-data 用户根本没权限写到 /tmp —— 审计时得一层层剥开,不能只盯一个地方。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











