通过Xdebug禁用HTML堆栈跟踪

20
管理员在我们共享的 PHP 5.3.0 服务器上安装了 Xdebug 2.1.1 以便使用其调试器。现在,我几乎无法阅读未被捕获异常的堆栈跟踪,因为 Xdebug 格式化它们时会使用令人讨厌的颜色,这些颜色与网站的 CSS 样式相互影响:

Unreadable stack trace

由于 PHP 作为 Apache 模块运行,我尝试在 .htaccess 文件中禁用此功能,但无法解决该问题:
php_flag xdebug.default_enable Off
php_flag xdebug.overload_var_dump Off
php_flag xdebug.show_exception_trace Off
php_value xdebug.trace_format 1

phpinfo() 显示我所做的更改在 Local Value 列中,但我仍然可以看到那些可怕的橙色表格。我需要更改哪个指令?

phpinfo() 显示了我在 Local Value 列中所做的更改,但是我仍然能看到那些令人不爽的橙色表格。我需要更改哪个指令?


http://xdebug.org/docs/stack_trace - hakre
3个回答

14

您需要确保PHP中也有html_errors=0。 此外,橙色并不可怕 ;-)


我不确定我是否理解了它。我已经使用HTML错误,连同error_prepend_stringerror_append_string,以便我可以显示换行符。如果我禁用它,Xdebug就不会绘制HTML,但这也使错误变得难以阅读,因为所有内容都在一行中。我不想在查看源代码窗口中搜索错误消息... - Álvaro González
非常有用,如果您从PHP输出JSON以供JavaScript、Angular等使用。 - Pere
6
如果@derick回答你,最好认真听取。他是XDebug的作者。 - Jeroen Vermeulen - MageHost

14
检查 xdebug_disable()文档

禁用堆栈跟踪

禁止在错误条件下显示堆栈跟踪。

另请参阅 xdebug.default_enable文档
如果此设置为1,则默认情况下会显示错误事件的堆栈跟踪。您可以使用xdebug_disable()从代码中禁用显示堆栈跟踪。由于这是Xdebug的基本功能之一,建议将此设置保持为1。

xdebug.default_enable 没有明显的效果,但在我的代码顶部调用 xdebug_disable() 可以正常工作。我会看看如何将其打包到我的网站设置中。 - Álvaro González
尝试将 xdebug.default_enable 放入系统的 php.ini 中,也许会起作用。此外,在 .htaccess 配置中使用 0 而不是 off 也可能有所帮助,但这只是一个假设,我还没有测试过。 - hakre
1
好的...我已经进行了进一步的测试,指令确实是 xdebug.default_enable,但似乎有一个错误:在共享开发服务器上它被忽略,在我的本地安装中完全被尊重。 - Álvaro González
@Álvaro G. Vicario:你现在是还在使用.htaccess配置方法,还是改用php.ini了?只是想要澄清一下。 - hakre
在Debian上,php.ini中的xdebug.default_enable=off适用于php5.4。 - Dr Casper Black
显示剩余2条评论

6
在初始化脚本中添加以下代码:
 if (function_exists('xdebug_disable')) {
           xdebug_disable();
         }

1
请注意,remote_autostartremote_enable 控制调试器。它们与堆栈跟踪无关。 - Álvaro González
就像Alvaro所说的那样,这里的选项#2与显示HTML堆栈跟踪无关。 - rockerston
根据建议更新。 - Sumoanand

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接