前言
我不知道是不是因为我电脑的问题,xdebug配置一直不成功,也成为了我心里一直过不去的一个小坎,今晚咬咬牙,必须要把xdebug拿下!也是终于自己配好环境了,大部分问题还是出在自己的理解上。下面我详细记录我自己配置vscode xdebug远程调试的配置过程。
1.确认php版本和路径
首先确认我们的php版本
php -v

然后找到vscode使用的php对应的路径
<?php
echo "PHP 版本: " . PHP_VERSION . "\n";
echo "PHP 路径: " . PHP_BINARY . "\n";
echo "配置文件: " . php_ini_loaded_file() . "\n";
?>

路径记好备用,稍后我们要修改这里的php.ini文件
2.xdebug配置
2.1.xdebug下载
方法一:手动确认版本
本地运行phpinfo页面,搜索architecture

然后我们前往xdebug官网下载我们需要的xdebug扩展版本
https://xdebug.org/download/historical

Architecture x86 对应 32 bit ;x64对应 64 bit
Zend Extension Build NTS不显示,TS则找TS版本;VC15对应即可。
方法二:自动确认版本
https://xdebug.org/wizard
我们可以在终端执行
php -i
输出phpinfo的全部内容,或者phpstudy搭一个phpinfo的页面,去源代码页面复制全部的html源代码,将他们全部粘贴到这个网站的框中,自动分析,他会告诉你需要安装的xdebug扩展版本。
2.2.放置xdebug扩展
安装扩展版本后,我们将其放在刚才找到的php路径中,我的路径是
D:\SOFTWARE\phpstudy_pro\Extensions\php\php7.3.4nts\php.exe
我们找到D:\SOFTWARE\phpstudy_pro\Extensions\php\php7.3.4nts\ext\
把扩展文件放在这个目录中

2.3.配置php.ini
在php.ini末尾添加以下内容
[Xdebug]
zend_extension=php_xdebug-3.1.6-7.3-vc15-nts-x86_64.dll
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_port = "9003"
xdebug.remote_host="localhost"
xdebug.mode = debug,develop,trace
xdebug.start_with_request = yes
xdebug.log="D:\SOFTWARE\phpstudy_pro\Extensions\php\php7.3.4nts\xdebug.log"
xdebug.log_level = 7
xdebug.idekey = VSCODE
这里的xdebug.remote_port端口记得和phpinfo中的xdebug端口保持统一,php.ini配置结束后,在phpinfo页面中搜索xdebug.client_port即可看到端口

xdebug.remote_host="localhost"就是远程调试项目的地址,根据实际情况填写。
xdebug.idekey = VSCODE 这个要搭配浏览器的xdebug helper来使用,后文会提到。
xdebug.log="D:\SOFTWARE\phpstudy_pro\Extensions\php\php7.3.4nts\xdebug.log"是xdebug的日志保存路径,如果xdebug不能正常运行,我们可以查看日志,根据报错来解决问题。
注意:配置php.ini时不要在开头加分号,这是php.ini的注释符。
2.4.检查xdebug配置
我们在phpinfo中搜索xdebug,出现如图所示的页面即表示配置成功。

3.vscode配置
3.1.安装php debug扩展
我们在vscode扩展中搜索php debug扩展,安装并应用

3.2.配置launch.json
我们随便点一个断点,点击f5,出现调试页面

在左上角点击 没有配置 右边向下的箭头,创建对应你的项目目录的配置文件

更改为下面所示launch.json
{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "Listen for Xdebug","type": "php","request": "launch","port": 9003, // 以实际端口为准"pathMappings":{"D:\\webroot\\nine\\" : "${workspaceFolder}\\" // 以实际项目为准},"hostname": "localhost" // 以实际主机名为准},{"name": "Launch currently open script","type": "php","request": "launch","program": "${file}","cwd": "${fileDirname}","port": 9003, // 以实际端口为准"runtimeArgs": ["-dxdebug.start_with_request=yes"],"env": {"XDEBUG_MODE": "debug,develop","XDEBUG_CONFIG": "client_port=${port}"}},{"name": "Launch Built-in web server","type": "php","request": "launch","runtimeArgs": ["-dxdebug.mode=debug","-dxdebug.start_with_request=yes","-S","localhost:0"],"program": "","cwd": "${workspaceRoot}","port": 9003, // 以实际端口为准"serverReadyAction": {"pattern": "Development Server \\(http://localhost:([0-9]+)\\) started","uriFormat": "http://localhost:%s", // 以实际主机名为准"action": "openExternally"}}]
}
至此,vscode配置完成。
4.浏览器插件xdebug helper配置
我们在浏览器中搜索插件 xdebug helper

添加到浏览器后,我们在管理扩展中选择这个扩展的选项


修改为如图所示

这里和php.ini中的xdebug.idekey = VSCODE 统一。
5.配置完毕,测试调试功能
至此我们的xdebug配置基本结束,我们来测试xdebug的调试功能
这里以一道反序列化的题目为例,我们在判断传参的位置打上断点

来到phpstudy搭好的网站,我们打开xdebug helper

vscode f5打开调试

出现箭头指的这两个东西即表示调试开始监听。我们随便传一个参数

点击执行,观察vscode调试页面是否变化

我们看到断点位置出现黄条,变量也更新,证明xdebug调试搭建完成。
尾声
做php反序列化再也不用手动echo啦哈哈哈哈哈哈哈哈