基于PhpStorm的Xdebug搭建实践一、前言 前一段时间公司电脑重新装系统,导致PHP等开发环境需要重新安装,特别
一、前言
前一段时间公司电脑重新装系统,导致PHP等开发环境需要重新安装,特别Phpstorm和Xdebug的配置一直调试不通,网上搜索出来的资料也有点混乱(主要还是我菜)。 暴露了之前对xdebug这一块的内容了解的不够透彻,所以,我决定写这篇文章,既是对自己的一个总结,也是希望能和大家一起交流心得,共同进步。
二、原理
- IDE启动本地9002端口监听
- web服务器根据配置文件中的remote ip和port信息,进请求转发到配置的IDE上
三、实践操作
注意:这里主要以xdebug 3.X 来进行实验,2.X和3.X的配置有差别。详情可参考官方文档
3.1、web 服务器环境配置
- Nginx -> php-fpm配置,相信大家都很熟悉,这里就略过了(注意这里用通过tcp协议进行通讯,端口为9000)
- 安装Xdebug 可以使用在此网站上进行检验下载,配置Xdebug参数配置(php.ini文件配置)-- 配置修改参数,记得重载文件
*** 省略部分内容 ***
...
[xdebug]
zend_extension="/www/server/php/81/lib/php/extensions/no-debug-non-zts-20210902/xdebug.so"
;xdebug3.0中用于代替之前的xdebug.remote_enable=On
xdebug.mode=debug
;xdebug3.0中用于代替之前的xdebug.remote_autostart,trigger对应之前的off,yes对应之前的on
xdebug.start_with_request=yes
;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=9002
xdebug.remote_handler="dbgp"
xdebug.idekey="PHPSTORM"
3.2、IDE配置(这里主要以Phpstorm为主)
- 先设置IDE本地监听端口,并进行启动
IDE参数配置
![]()
![]()
![]()
查看是否正常启动9002 端口进行监听(我的环境是mac,win等其他环境可自行查找对应的命令)
访问链接,就可以看到IDE中打印出相关的信息
3.3、号外
可能有些朋友平时在一些文章看到一些介绍说,需要安装浏览器xdebug拓展之类的,为什么我们这不安装也可以使用呢?原因是出在参数xdebug.start_with_request的设置上
这里我们关闭自动调试,来操作一次浏览器插件启动调试的方案
# 这里我们关闭自动调试 (记得重载文件)
xdebug.start_with_request=trigger
启动调试模式
配置浏览器xdebug
启动浏览器访问,查看效果
总结与思考
- Xdebug和IDE调试的基本原理
- 自动调试模式的设置、非自动调试模式的设置
- Xdebug与Phpstorm之间ssh通讯值得进一步研究
参考资料
转载自:https://juejin.cn/post/7384109433734299667