目录

PHP 安装 Xdebug 扩展来调试程序

Xdebug is an extension for PHP, and provides a range of features to improve the PHP development experience.

概述

XdebugPHP 的一个扩展,以协助调试和开发。它包含一个 single step debuggerIDEs 一起使用;它升级了 PHPvar_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()echodd()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

https://inotes.oss-cn-beijing.aliyuncs.com/php/201812/php-phpstorm-dbgp.png

效果

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

https://inotes.oss-cn-beijing.aliyuncs.com/php/201812/php-xdebug-display.png

项目调试

配置 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

https://inotes.oss-cn-beijing.aliyuncs.com/php/201812/php-xdebug-php-dbgp.png

配置完成后重启 php-fpm

PHP Servers

如果是虚拟机开发,请配置项目路径映射。

https://inotes.oss-cn-beijing.aliyuncs.com/php/201812/php-xdebug-server-config.png

PHP Debug Configurations

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

https://inotes.oss-cn-beijing.aliyuncs.com/php/201812/php-xdebug-debug-config.png

项目调试效果图

当浏览器运行指定的 URL,也就是 PHP Web Application 配置的 Start URL 时,出现 Xdebug 控制台,根据控制台来进行操作

调试窗口说明:

  • Debugger:调试器,比如:跳过,单步调试等操作
  • Frames:运行的帧,当前项目调试时载入的关联程序
  • Variables:调试中的所有变量
  • Watches:监视器,自定义变量监视

https://inotes.oss-cn-beijing.aliyuncs.com/php/201812/php-xdebug-phpstorm-debug.png

参考

Configuring Xdebug