介绍
Xdebug 需要在执行 PHP 代码的机器上(远程主机)安装 Xdebug, 然后再本机上运行 Xdebug Client。 集成开发环境一般内置有 Xdebug Client(本文以 PHPStorm 为例),流行的编辑器 Vim, Emacs 也都有对应的插件,详细可看官方网站的[[http://xdebug.org/docs/remote#clients]]。 尽管本机运行的是 `Xdebug Client`, 但是却需要监听某个端口,等待 `Xdebug` 连接。
安装
pecl install xdebug //Mac 用户可以执行 brew install php<version number>-xdebug
安装完成后执行 `php -v`, 如果能看到 "with Xdebug ..." 说明安装成功。
配置
可以直接修改 php.ini 文件,也可以把 Xdebug 配置作为单独的文件被 php.ini 包含。
我们环境中推荐修改 `/usr/local/etc/php/php.d/zend_extension.ini`.
[Xdebug]
zend_extension=xdebug.so
xdebug.idekey = mykey
xdebug.remote_autostart = 1
xdebug.remote_enable = 1
;xdebug.remote_host = 172.16.10.103
xdebug.remote_connect_back = 1
xdebug.remote_port = 10000
* xdebug.idekey = mykey ide key, 用于标识调试会话
* xdebug.remote_autostart 是否自动启动,1:自动0:需要设置http请求参数或cookie指定XDEBUG_SESSION=$idkey来启动。默认0,根据需求设置这个值。个人建议设置为1,这样不需要
在每个需要调试的接口都修改请求参数
* xdebug.remote_enable = 1 是否开启远程调试
* xdebug.remote_host = 172.16.10.103 远程主机 IP, 也就是 PHPStorm 所在机器(PHPStorm 作为 xdebug client),没有固定 IP 的机器建议使用 `connect_back` 选项。
* xdebug.remote_connect_back = 1 是否连接回请求发出的主机,如果 PHPStorm 所在的机器 IP 经常变动(DHCP 环境下),则建议开启这个选项
* xdebug.remote_port = 10000 远程主机端口,也就是开发者机器端口
---++PHPStorm 配置
https://confluence.jetbrains.com/display/PhpStorm/Zero-configuration+Web+Application+Debugging+with+Xdebug+and+PhpStorm
以上链接给出的配置方法已经足够好。需要注意的是:如果配置了 **remote_autostart**, 则步骤4,5 不是必要的。
php 脚本有最大执行时间限制,比较长的调试会话很可能会超时,所以,要增大超时时间。
nginx:
fastcgi_connect_timeout 600000;
fastcgi_send_timeout 600000;
fastcgi_read_timeout 600000;
php-fpm:
request_terminate_timeout = 30m