trae 中 PHP 的 log_errors 默认关闭,需手动修改 php.ini 将 log_errors = On 并设置可写 error_log 路径,重启 trae 后生效;display_errors 与 log_errors 无关,前者仅控制浏览器输出。

trae 中 PHP 的 log_errors 默认是关的
trae 自带的 PHP 环境(通常是 PHP 7.4/8.x)默认关闭了错误日志记录,log_errors 设为 Off,所以即使你写了 error_log("test") 或触发了 Notice,也不会写入日志文件。这不是 bug,是 trae 的精简配置策略——它优先保证启动快、无冗余输出。
改 php.ini 是唯一可靠方式
trae 的 PHP 配置只读取主 php.ini,不支持 .user.ini 或 ini_set() 动态修改 log_errors(后者在 CLI 模式下无效,在 trae 的内置 Web 服务中也常被忽略)。必须手动编辑配置文件:
- 找到 trae 的 PHP 配置路径:通常为
~/.trae/php/etc/php.ini(macOS/Linux)或%USERPROFILE%\.trae\php\etc\php.ini(Windows) - 搜索
log_errors =,改为log_errors = On - 顺手确认
error_log =指向可写的路径,例如:error_log = /tmp/php-error.log(macOS/Linux)或error_log = C:\Users\YourName\AppData\Local\Temp\php-error.log(Windows) - 保存后重启 trae(不是重载,是完全退出再打开)
display_errors 和 log_errors 别搞混
很多人开了 display_errors = On 就以为日志也有了,其实这是两回事:display_errors 控制错误是否直接输出到浏览器(开发时有用,但线上必须关),而 log_errors 才决定是否写入日志文件。trae 默认两者都是 Off,要日志就必须单独开 log_errors。
常见误判现象:
– 页面空白或 500,但日志文件没新增内容 → 很可能 log_errors 还是 Off,或 error_log 路径不可写
– 日志里只有 PHP Warning,没有 Notice 或 Deprecated → 检查 error_reporting 是否设为 E_ALL
立即学习“PHP免费学习笔记(深入)”;
验证是否生效的最快方法
在项目根目录放一个 test.php,内容如下:
访问 http://localhost:8080/test.php 后,立刻检查你配置的 error_log 文件路径是否有新内容。注意:trae 的日志写入有轻微延迟(最多 1–2 秒),别刷太快。
如果仍没日志,优先检查文件权限(尤其是 Windows 下的临时目录常被系统拦截)、路径中是否含中文或空格、以及 trae 是否真的用的是你改的那个 php.ini(可在 phpinfo() 页面里 Ctrl+F 搜 “Loaded Configuration File” 确认)。
trae 的 PHP 日志机制本身没问题,问题几乎都出在配置路径错位或权限不足上。改完 php.ini 后不重启 trae,等于没改。











