trae中PHP错误日志默认路径为/var/log/php_errors.log,由php.ini中error_log指令指定,需确认log_errors=On且执行trae php restart生效。

trae 中 PHP 错误日志默认位置是 /var/log/php_errors.log
trae 是基于 Ubuntu 的轻量级 PHP 开发环境,它把 PHP-FPM 和 Nginx 封装成一键服务。默认配置下,PHP 错误日志不走系统 syslog,也不混在 Nginx access/error 日志里,而是单独写入 /var/log/php_errors.log。这个路径由 php.ini 中的 error_log 指令控制,trae 的预设值就是这个绝对路径。
确认当前生效的 error_log 路径用 php -i | grep error_log
实际项目中可能改过配置,或用了多版本 PHP(比如通过 trae php use 8.2 切换),必须以运行时为准。执行命令:
php -i | grep error_log
输出类似:
error_log => /var/log/php_errors.log => /var/log/php_errors.log
注意两点:
立即学习“PHP免费学习笔记(深入)”;
- 左边是编译/ini 设置的值,右边是最终生效值;若右边为空,说明日志被禁用(
log_errors = Off) - 如果看到
error_log => syslog,那日志其实进了journald,得用journalctl -u php8.2-fpm查(trae 默认不用这个) - 部分用户手动改过
php.ini把路径指向了/tmp/php-error.log这类临时位置,重启trae php restart才生效
tail -f 实时看日志比翻文件更有效
开发调试时,错误往往一闪而过,等你打开文件再找,最新几条已经刷走了。直接监听:
sudo tail -f /var/log/php_errors.log
需要 sudo 是因为 trae 默认把日志权限设为 640,属主是 www-data。如果你不想每次输密码,可临时加用户到 www-data 组:
sudo usermod -aG www-data $USER
然后重新登录终端。另外注意:
-
tail -f不会自动识别日志轮转(logrotate),如果看到日志突然“断掉”,大概率是被logrotate重命名或清空了 - trae 默认没开
log_errors = On在所有 SAPI 下都生效——CLI 脚本出错不会写进这个文件,得单独配php -d log_errors=On -d error_log=/path script.php
找不到 /var/log/php_errors.log?先检查 log_errors 是否开启
最常踩的坑不是路径错,而是根本没开记录。检查三处:
-
php -i | grep log_errors—— 看是否为On -
grep -r "log_errors" /etc/php/*/fpm/php.ini—— trae 多版本共存时,要确认对应版本的 FPM 配置 -
sudo systemctl status php8.2-fpm—— 若显示failed,FPM 没跑起来,自然没日志
修改后必须执行 trae php restart,只 reload 不行,因为 trae 的 FPM 启动脚本不支持平滑 reload 日志配置。
日志路径本身不难查,难的是确认它正在被写入——很多问题卡在 log_errors = Off 或配置没加载对版本,而不是路径藏得多深。











