背景
高效全面,再也不在使用echo var_dump
问题
很多开发人员知道有xdebug的好处,但是无法大规模使用很大因素是安装不正确的版本和配置不对,下面手把手安装和配置,想了解原理可以参考本文文献。
安装
- 打开官网 https://xdebug.org/docs/install
- 选择通过phpinfoj解析对应版本 https://xdebug.org/wizard
- 复制phpinfo 源代码到文本框中,如下图
- 打开phpinfo 页面
-
右键源代码复制出来
- 点击解析文本框
-
立即获取推荐版本和安装过程,结合当前自身环境安装扩展
- 安装成功重启nginx 和 php-fpm
- 检测是否安装成功
php -m | grep xdebug
配置
在xdebug3.0以后,很多参数都改名了,如下所示(添加于2022.07.28),文章中其它部分还有很多地方是用3.0以前的参数的,大家自行对应一下,把它们对应到3.0以后的新参数就行,3.0修改的参数文 点击这里
部分解析
[xdebug]
zend_extension="/path/to/xdebug.so"
;xdebug3.0中用于代替之前的xdebug.remote_enable=On
xdebug.mode=debug
;xdebug3.0中用于代替之前的xdebug.remote_autostart,trigger对应之前的off,yes对应之前的on
xdebug.start_with_request=trigger
;xdebug3.0中用于代替之前的xdebug.remote_host
xdebug.client_host="127.0.0.1"
;xdebug3.0中用于代替之前的xdebug.remote_connect_back=On,它会自动从$_SERVER['HTTP_X_FORWARDED_FOR']
;或$_SERVER['REMOTE_ADDR']变量中获取ip,当然因为$_SERVER只有服务器模式有所以客户端模式是用不了的(可配置其它变量)
;如果找不到ip它会回退(fallback)到xdebug.client_host指定的ip
xdebug.discover_client_host=true
;xdebug3.0中用于代替之前的xdebug.remote_port
xdebug.client_port=9003
;固定填dbgp(因为目前只支持这个协议,也只有这个协议)
xdebug.remote_handler="dbgp"
## 以下是我配置的
[Xdebug]
zend_extension=xdebug.so
xdebug.mode = debug
xdebug.discover_client_host = true
xdebug.client_port = 9005
xdebug.max_nesting_level = 512
xdebug.remote_enable = 1
xdebug.remote_connect_back = 1
xdebug.idekey = PHPSTORM
xdebug.remote_autostart=1
xdebug.client_host=192.168.56.1 # 这里最重要 ,可以查看原理就清楚了
xdebug.remote_handler=dbgp
xdebug.start_with_request=trigger
xdebug.remote_autostart=1
记得重启服务
配置phpstorm
-
选择新增配置
-
添加远程调试服务器
验证
http:{path}/index.php?XDEBUG_SESSION_START=PHPSTORM
参考文献
Xdebug3 断点调试环境之 - Laravel8 + PHP8 + Xdebug3 + PhpStorm2021.3 + Homestead v13.2.1 + Mac
PhpStorm Xdebug远程调试环境搭建原理分析及问题排查
可能是全网最详细的PhpStorm+xdebug远程调试php代码的教程
phpstorm中使用xdebug配置cli模式的调试