WSL2+XDebug3+PhpStorm调试配置教程
花了大半天时间去配置WSL2子系统使用XDEBUG3在PHPSTORM调试,第一次配置少不了踩坑,这里记录一下过程。
环境
首先是环境说明:
- WSL2-Ubuntu20.04
- PHP-7.4.3
- PHPSTORM-2021.2.3
- XDEBUG-v3.1.0
这里怎么装WSL2和PHPSOTRM就不赘述了,网上的教程都比较多,这里主要讲的是怎么在WSL2上配置XDEBUG3让我们能够在PHPSTOEM上进行调试。
XDebug下载
XDebug的官网:https://xdebug.org/
具体XDebug下载链接:https://xdebug.org/download,这里选择适合自己的版本下载。
这里值得一提的是在Ubuntu中是可以直接用
apt install php-xdebug
这个命令来安装XDebug的,但是这个命令下载回来的XDebug版本是2(也有可能是我没有更新软件列表),并不适用于今天的教程。
怎么才能直到自己的系统适合哪个版本呢?官方给出了很方便的解决办法:https://xdebug.org/wizard 。将系统命令 php -i
输出的 phpinfo()
信息复制粘贴到下面的框中就可以得到你系统对应的版本,以及对应的安装步骤。
XDebug安装
解压
$ tar -xvzf xdebug-3.1.1.tgz
编译
$ cd xdebug-3.1.1
$ phpize
$ ./configure
$ make
$ cp modules/xdebug.so /usr/lib/php/xxxxxxx
配置php.ini
首先在你的本机上使用 ipconfig
查看子系统的IP地址
以太网适配器 vEthernet (WSL):
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::8e7:f00a:665d:1cf8%61
IPv4 地址 . . . . . . . . . . . . : 172.24.0.1
子网掩码 . . . . . . . . . . . . : 255.255.240.0
默认网关. . . . . . . . . . . . . :
可以看到我这里的子系统的地址为 127.24.0.1,然后修改子系统里面的 /etc/php/7.4/apache2/php.ini 文件,在最后追加上:
[Xdebug]
zend_extension=xdebug
xdebug.mode = debug
;xdebug.start_with_request=yes
xdebug.client_host = "172.24.0.1"
xdebug.client_port = 9003
xdebug.idekey="PHPSTORM"
配置完成后使用命令 service apache2 restart
重启 Apache 服务,再查看 phpinfo()
页面可以看到 XDebug3 已经安装成功。
PhpStorm开启监听
在设置里面查看Xdebug对应的端口是否与设置的一致
然后在设置的页面设添加对应的服务,记得添加映射,把绝对路径设置为WSL中的绝对路径
Debug → DBGp Proxy,这里是设置IDE key以及监听host和port信息的,这里注意和php.ini的属性保持一致即可。
然后是配置调试的配置
最后开启监听模式即可:
浏览器插件 —— Xdebug Helper
这个插件时帮助你在请求页面的时候添加上对应的cookie,让服务器识别到这个请求是要进行调试的。
设置IDE Key:
调试
上面的步骤都搞定之后就可以愉快地调试了,开启Xdebug Helper和PhpStorm中的监听模式,然后在代码中设置断点,最后请求设置中对应的域名即可。