如何使Xdebug在打开页面时只显示回溯,而不记录回溯


How to make Xdebug only show backtrace when opening page, and not log the backtrace?

Xdebug当前将整个回溯记录在定义的error_log文件中:

CustomLog /var/log/www/access.log combined
ErrorLog /var/log/www/error.log
php_value error_log /var/log/www/error.log

这很好。然而,它记录的内容太多了。自从我安装Xdebug以来,它的日志如下:

[02-May-2016 16:14:20 Europe/Berlin] PHP Notice:  Undefined variable: k in /var/www/index.php on line 30
[02-May-2016 16:14:20 Europe/Berlin] PHP Stack trace:
[02-May-2016 16:14:20 Europe/Berlin] PHP   1. {main}() /var/www/index.php:0

这样重复大约10次。我完全可以接受这样的错误消息:

[02-May-2016 16:14:20 Europe/Berlin] PHP Notice:  Undefined variable: k in /var/www/index.php on line 30

以及在打开时在页面上具有完整的堆栈跟踪。有可能吗?我找不到任何与只记录消息和在页面上显示跟踪相关的选项。

  • PHP 5.6.4版
  • xdebug 2.4.0版

XDebug文档之后:

xdebug.default_enable = 0

默认值:1

如果此设置为1,则默认情况下会在错误事件中显示堆栈竞速。您可以使用xdebug_disable()禁用显示代码中的堆栈种族。由于这是Xdebug的基本功能之一,因此建议将此设置保留为1。

我宁愿在xdebug_disable()的脚本树函数开头的某个地方使用一个适当的开关,以使其能够打开和关闭,这取决于开发状态:

define('VERBOSE', /* from config/db/etc value of true/false */ false);
if(!VERBOSE) {
    xdebug_disable();
}

如果您的服务器管理员不愿意更改生产环境配置,这将给您留下更多的灵活性。