我使用的是带有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上