Xdebug Chrome 预览未正确呈现响应,仅显示一行

Xdebug Chrome preview not rendering the response properly, shows one line only

Chrome 预览无法正确呈现响应,因为昨天我将工作机器从 Win 8 升级到 Win 10。请看截图:

如你所见,只有一行对象被渲染,当我用一个简单的数组尝试它时,同样的事情发生了,它只渲染了单词 "array" 和“0”;

我正在使用 Chrome 72.0.3626.96,WampServer64 和 PHP 7.2.14,这些是我在 php.ini 中的 Xdebug 设置:

zend_extension="c:/wamp64/bin/php/php7.2.14/zend_ext/php_xdebug-2.6.1-7.2-vc15-x86_64.dll"

xdebug.default_enable=1
html_errors = On
xdebug.remote_host = 127.0.0.1
xdebug.remote_enable = 1
xdebug.remote_port = 9123
xdebug.profiler_enable = off
xdebug.profiler_enable_trigger = off
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir ="c:/wamp64/tmp"
xdebug.show_local_vars=0
xdebug.var_display_max_depth = 10
xdebug.var_display_max_children = 256
xdebug.var_display_max_data = 1024 

在我得到 Windows 10 之前,它确实在一天前工作。Chrome 错误还是我做错了什么?

我发现了这个问题,它很奇怪。看起来 Chrome 的最新版本(对我来说是 72.0.3626.119)在响应文本在输出中包含井号 (#) 时呈现预览时出现问题。它会愉快地呈现所有内容,直到遇到哈希字符。这绝对是 Chrome.

中的错误

我首先注意到预览停止在 <font color='#888a85'>=&gt;</font> 时发现了这一点。我在文档中对此进行了硬编码并删除了字符,直到我断定哈希字符导致了问题。

这是该错误的演示。当您在最新版本 Chrome 中 运行 此代码段并打开 Inspector 时,您应该会在网络选项卡中看到请求弹出。当您单击请求并转到预览选项卡时,第三段被截断,因为它前面有一个 #

<p>Para1</p>
<p>Para2</p>
#
<p>Para3</p>

我找不到关于此的公开错误报告,所以我冒昧地在这里报告:https://bugs.chromium.org/p/chromium/issues/detail?id=936284

看起来这个问题已经被报告(link)并在 Chrome 的开发版本中得到修复,但尚未在稳定版本中更新。

与此同时,如果您确实需要让 var_dump 在 Chrome 中工作,您可以将此作为解决方法(缓冲输出并替换 # 的实例):

ob_start();
var_dump($var);
echo str_replace('#','',$ob_get_clean());

...或者您可以关闭 HTML 错误:

ini_set('html_errors', false);