Xdebug3 远程断点调试环境

背景

高效全面,再也不在使用echo var_dump

问题

很多开发人员知道有xdebug的好处,但是无法大规模使用很大因素是安装不正确的版本和配置不对,下面手把手安装和配置,想了解原理可以参考本文文献。

安装

  • 打开官网 https://xdebug.org/docs/install
  • 选择通过phpinfoj解析对应版本 https://xdebug.org/wizard
  • 复制phpinfo 源代码到文本框中,如下图
    • 打开phpinfo 页面
    • 右键源代码复制出来


      PHP 配置信息

      复制到文本框
    • 点击解析文本框
    • 立即获取推荐版本和安装过程,结合当前自身环境安装扩展


      根据提示安装即可
  • 安装成功重启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

  • 选择新增配置


    添加服务

    新增配置

    选择远程调试
  • 添加远程调试服务器


    image.png

    image.png

    image.png
image.png

验证

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模式的调试

你可能感兴趣的:(Xdebug3 远程断点调试环境)