如何让xdebug var_dump显示完整的对象/数组

时间:2012-04-03 17:38:57

标签: php xdebug

我在xdebug上使用WAMP(php_xdebug-2.1.2-5.3-vc9.dll)。当我在大对象或变量上使用var_dump时,它不会显示完整变量。

array
'node' => 
  array
    'my_form' => 
      array
        'form' => 
          array
            ...

如果没有xdebug,它会显示为应该是预期的。我查看了文档,但没有看到解决方案。有谁知道如何解决这个问题,以便xdebug var_dump显示完整的对象?

6 个答案:

答案 0 :(得分:547)

这些是php.ini中的可配置变量:

; with sane limits
xdebug.var_display_max_depth = 10
xdebug.var_display_max_children = 256
xdebug.var_display_max_data = 1024 


; with no limits
; (maximum nesting is 1023)
xdebug.var_display_max_depth = -1 
xdebug.var_display_max_children = -1
xdebug.var_display_max_data = -1 

当然,这些也可以在运行时通过ini_set()设置,如果您不想修改php.ini并重新启动Web服务器但需要快速检查更深入的内容,则非常有用。

ini_set('xdebug.var_display_max_depth', '10');
ini_set('xdebug.var_display_max_children', '256');
ini_set('xdebug.var_display_max_data', '1024');

Xdebug settings are explained in the official documentation

答案 1 :(得分:33)

我知道这是一篇超级老帖子,但我认为这可能仍然有用。

如果您对阅读json格式感到满意,可以将var_dump替换为:

return json_encode($myvar);

我一直在使用它来帮助解决我正在构建的具有一些深层嵌套数组的服务。这将返回数组的每个级别,而不会截断任何内容或要求您更改php.ini文件。

另外,因为json_encoded数据是一个字符串,这意味着你可以轻松地将它写入错误日志

error_log(json_encode($myvar));

它可能不是每种情况的最佳选择,但它是一种选择!

答案 2 :(得分:12)

或者您可以使用替代方案:

https://github.com/kint-php/kint

它的设置为零,并且具有比Xdebug的var_dump更多的功能。要使用Kint动态绕过嵌套限制,只需使用

 +d( $variable ); // append `+` to the dump call

答案 3 :(得分:9)

我现在这已经很晚了但可能会有所帮助:

echo "<pre>";
print_r($array);
echo "</pre>";

答案 4 :(得分:5)

结帐Xdebbug's var_dump settings,特别是这些设置的值:

xdebug.var_display_max_children
xdebug.var_display_max_data
xdebug.var_display_max_depth

答案 5 :(得分:1)

有时文件中的 var_export 非常有用。

file_put_contents(__DIR__.'/temp.txt', var_export($var, true), FILE_APPEND);

例如,如果您正在生产服务器上调试某些内容。