Xdebug is an extension for PHP, and provides a range of features to improve the PHP development experience.
概述
Xdebug
是 PHP
的一个扩展,以协助调试和开发。它包含一个 single step debugger
与 IDEs
一起使用;它升级了 PHP
的 var_dump()
函数;它为通知、警告、错误和异常添加了堆栈跟踪;它具有记录每个函数调用和变量赋值到磁盘的功能;它包含一个分析器;并且提供了与 PHPUnit
一起使用时的代码覆盖功能。
安装
Mac 安装
1
| $ brew install homebrew/php/php71-xdebug
|
Linux 安装
1
2
3
4
5
6
7
| $ git clone https://github.com/xdebug/xdebug.git
$ cd xdebug
$ phpize
$ ./configure --enable-xdebug --with-php-config=/usr/local/bin/php-config
$ sudo make clean
$ sudo make
$ sudo make install
|
Windows 安装
Xdebug Download Page
下载对应的 Windows
版本,将 php_xdebug-*.dll
复制到相应的文件中
配置
将生成的 xdebug.so 添加到 php.ini 文件中
由于不同的安装方式,配置文件的路径可能不太一样。有的扩展可能需要单独的文件去配置
1
2
| [xdebug]
zend_extension="/path/to/xdebug.so"
|
重启 php-fpm
1
2
3
4
5
| // Mac
$ brew services restart php71
// Linux
$ sudo systemctl restart php71-fpm
|
查看 xdebug 是否正确安装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| $ php -i | grep xdebug
/usr/local/etc/php/7.1/conf.d/ext-xdebug.ini
xdebug
xdebug support => enabled # 说明已经安装成功
或者
$ php --ini | grep xdebug
/path/to/conf.d/ext-xdebug.ini
$ cat /path/to/conf.d/ext-xdebug.ini
[xdebug]
zend_extension="/usr/local/opt/php71-xdebug/xdebug.so"
或者
$ php --ri xdebug
xdebug
xdebug support => enabled
|
进阶
当你习惯了使用 var_dump()
,echo
,dd()
,print_r()
,print
等这种方式调试代码,那么从现在起咱们换一种轻松的方式来调试代码。
配置 Xdebug 参数
使用 Homebrew
安装 PHP
环境后,在安装扩展时,一般会单独去加载扩展的配置
1
2
3
4
5
6
7
8
9
10
11
12
| $ vim /path/to/ext-xdebug.ini
[xdebug]
zend_extension="/usr/local/opt/php71-xdebug/xdebug.so"
xdebug.remote_enable = 1
xdebug.idekey = PHPSTORM
xdebug.remote_port = 9001
xdebug.collect_vars = On
xdebug.collect_params = 4
xdebug.dump_globals = On
xdebug.dump.SERVER = REQUEST_URI
xdebug.show_local_vars = On
|
配置 PhpStorm IDE

效果
对了,由于最近在调试支付宝接口,看到一些错误提示码代码,没有上下文的提示,加上本人特懒,不想在多次的调试中调试跟踪,面对这些绝望的错误提示,懵逼于此,好在我望眼欲穿的时候,猛然间想起了有个叫 xdebug
东东,真特么靠谱,这也是这篇文章的由来,花了十几分钟的工夫把这货安置妥当,就走上了调试的漫漫长路,你看神马错误上下文一览无余的原形毕露,调试代码怎一个爽字了得,不说了看图。

项目调试
配置 Xdebug
1
2
3
4
5
6
7
| [xdebug]
zend_extension="/usr/local/opt/php71-xdebug/xdebug.so"
xdebug.remote_enable = 1
xdebug.idekey = PHPSTORM
xdebug.remote_port = 9001
xdebug.remote_connect_back = 1
xdebug.profiler_enable = 1
|
配置 PhpStorm
PHP Debug DBGp Proxy

配置完成后重启 php-fpm
。
PHP Servers
如果是虚拟机开发,请配置项目路径映射。

PHP Debug Configurations
Server
这里选择上一步配置的 Server
就好。

项目调试效果图
当浏览器运行指定的 URL
,也就是 PHP Web Application
配置的 Start URL
时,出现 Xdebug
控制台,根据控制台来进行操作
调试窗口说明:
Debugger
:调试器,比如:跳过,单步调试等操作Frames
:运行的帧,当前项目调试时载入的关联程序Variables
:调试中的所有变量Watches
:监视器,自定义变量监视

参考
Configuring Xdebug