trae 中 PHP 的 display_errors 默认关闭,需手动开启:修改 /usr/local/etc/php/{版本}/php.ini 将 display_errors = On 和 error_reporting = E_ALL;或项目根目录建 .user.ini 同样配置,无需重启但仅限本目录生效。

trae 中 PHP 的 display_errors 默认是关的
trae 自带的 PHP 环境(通常是 PHP 7.4/8.0+)默认关闭了 display_errors,所以即使代码报错,浏览器也只显示空白页或 500 错误,看不到具体错误信息。这不是你代码的问题,而是配置没开。
直接改 trae 内置的 php.ini 文件最可靠
trae 的 PHP 配置文件路径固定,改它就能全局生效,比在代码里用 ini_set() 更彻底(尤其对 Parse Error 这类语法错误无效)。
- 找到配置文件:
/usr/local/etc/php/{版本号}/php.ini(例如/usr/local/etc/php/8.1/php.ini) - 搜索
display_errors,把这一行改成:display_errors = On - 同时确认
error_reporting没被设成0,建议设为:error_reporting = E_ALL - 改完保存,**必须重启 trae 服务**:终端执行
trae restart或点击桌面端「重启」按钮
如果只在某个项目临时调试,用 .user.ini 更安全
不想动全局配置?在项目根目录放一个 .user.ini 文件(注意开头是点),内容写:
display_errors = On error_reporting = E_ALL
trae 的 PHP-FPM 默认支持 .user.ini,修改后无需重启,但要注意:
立即学习“PHP免费学习笔记(深入)”;
- 该文件只对当前目录及子目录生效
- 某些低版本 PHP(user_ini.filename 在 phpinfo() 里是
.user.ini - 不能覆盖所有错误类型(比如启动阶段的 Fatal Error 仍可能不显示)
浏览器看到错误但内容被 HTML 标签包裹?检查 output_buffering
开了 display_errors 却发现错误信息混在页面源码里、被 包着,大概率是开启了输出缓冲。查 php.ini 中:
-
output_buffering = Off(推荐开发时关闭) - 或者设为
output_buffering = 0(数值 0 表示禁用) - 否则错误会和正常 HTML 一起输出,浏览器渲染时被当成普通文本压在页面底部
这个细节容易被忽略,尤其是从生产环境复制配置过来时,output_buffering 常被设成 4096 或 On。











