当我使用var_dump变量调试php时,它总是在开始时输出文件路径


When I debug php with var_dump variable it always outputs file path at the beginning?

我使用的是带有PHP 7的Ubuntu。

PHP 7.0.5-3+donate.sury.org~xenial+1 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
    with Xdebug v2.4.0, Copyright (c) 2002-2016, by Derick Rethans

当我使用var_dump调试PHP脚本以显示一些变量时:

<?php
var_dump('tmp string');
var_dump(true);

以下是其输出:

/var/www/example.com/test.php:3:string 'tmp string' (length=10)
/var/www/example.com/test.php:4:boolean true

为什么它总是以之前的文件路径输出?

我希望它输出如下:

string 'tmp string' (length=10)
boolean true

您看到的输出来自Xdebug扩展。(在没有扩展的情况下,var_dump输出无格式的纯文本。)

从Xdebug 2.3开始,设置xdebug.overload_var_dump有一个新的默认值2,它将文件名和行号添加到对var_dump的任何调用的输出中。有关详细信息,请参阅文档。我同意它没有那么有用,尤其是对于像短字符串/数字这样的简单输出。

要删除文件名,可以将选项设置为php.ini文件中1的旧值:

[xdebug]
xdebug.overload_var_dump = 1

我搜索了这个主题后来到了这里,但我继续寻找其他选择,只想为其他人添加我找到的内容。

从Xdebug>=2.6版本开始,有几个选项可以修改var_dump中显示的文件名。

// real output example of the %n specifier
courses_list.php:14:string 'tools' (length=5)

参考编号:https://xdebug.org/docs/all_settings#filename_format

xdebug.filename_format = "[Specifier]"

类型:字符串,默认值:…%s%n,在Xdebug中引入>=2.6

此设置确定Xdebug在HTML堆栈跟踪中呈现文件名的格式(默认值:…%s%n),以及通过重载的Xdebug_var_dump()呈现位置信息的格式(缺省值:%f)。

  • 指定符:%a

    • 含义:Ancester:两个目录元素和文件名
    • 示例输出:mail/transport/mta.php
  • 指定符:%f

    • 含义:完整路径
    • 示例:/var/www/vendor/mail/transport/mta.php
    • (为默认设置)
  • 指定符:%n

    • 含义:名称-仅文件名
    • 示例:mta.php
  • 指定符:%p

    • 含义Parent-一个目录元素和文件名
    • 示例:transport/mta.php
  • 指定符:%s

    • 含义:目录分隔符
    • 示例:''在Linux、OSX和其他类似Unix的系统上,/在Windows上