PHP错误日志路径由php.ini中error_log指令指定,需同时设置log_errors = On、使用绝对路径、确保www-data等进程用户有写权限,并通过phpinfo()确认真实生效的php.ini文件。

PHP错误日志路径不由Apache直接配置,而是由PHP自身的php.ini文件控制。Apache只负责启动PHP模块(如mod_php或转发给PHP-FPM),真正决定“错误写到哪”的是PHP的error_log指令。
确认你正在用的php.ini文件
不同环境可能有多个php.ini(CLI版、Apache版、PHP-FPM版),必须找对那个被Web服务器加载的版本:
- 在网站根目录新建
info.php,内容为<?php phpinfo(); ?> - 用浏览器访问
http://你的域名/info.php - 查找Loaded Configuration File这一行,得到真实生效的php.ini绝对路径(例如
/etc/php/8.2/apache2/php.ini)
修改php.ini中的关键配置项
打开上面找到的php.ini文件,确保以下两项同时存在且生效:
- log_errors = On —— 不开启这项,任何错误都不会写入日志
-
error_log = /var/log/php_errors.log —— 必须填绝对路径,不能是相对路径(如
./logs/error.log会静默失败)
推荐路径:/var/log/php_errors.log(Debian/Ubuntu)或/var/log/php/error.log(CentOS/RHEL),注意后续要赋予权限。
立即学习“PHP免费学习笔记(深入)”;
设置权限并重启服务
PHP进程(通常是www-data或apache用户)必须能往日志路径写入:
- 创建日志目录并授权:
sudo mkdir -p /var/log/php && sudo chown www-data:adm /var/log/php(Ubuntu/Debian) - 或:
sudo chown apache:apache /var/log/php(CentOS/RHEL) - 重启Apache:
sudo systemctl restart apache2(Debian系)或sudo systemctl restart httpd(RHEL系)
验证是否生效
写一个测试脚本触发错误:
- 新建
test-error.php,内容:<?php undefined_function(); ?> - 浏览器访问该文件,页面应为空白(因
display_errors=Off默认关闭) - 执行
sudo tail -f /var/log/php_errors.log,应立即看到类似PHP Fatal error: Uncaught Error: Call to undefined function undefined_function()的日志



















