我这里PHP版本就是8.0.2 VS16 x64 TS,对应选择下载就行了。
下好后把下载的DLL放到PHP/ext目录下,再修改PHP根目录下的php.ini文件,在尾部追加:
[xdebug] zend_extension=php_xdebug-3.0.3-8.0-vs16-x86_64.dll xdebug.client_port = 9005 xdebug.client_host = localhost xdebug.log = D:/software/Coding/xampp/php/xdebug.log xdebug.mode=trace,debug,develop xdebug.start_with_request=yes xdebug.output_dir = D:/software/Coding/xampp/php/tmp xdebug.force_display_errors = 1需要注意的是第二行要准确地指定到刚刚安置好地DLL文件,因为这里是安装到PHP的指定扩展文件目录,即php/ext所以是不用指定完整目录路径,只要指定文件名就行,如果你存放在其它目录则需要指定完整路径。
还有一个需要注意的地方是不能省略dll文件后缀名,网上有的教程是省略的,那样是不能成功加载xdebug的。
这里从上到下解释一下xdebug配置项的用途,需要特别说明的是这里的配置是适合xdebug 3.0.3版本的,所以和其它教程中老版本的是不同的。
网上找到的诸多XDebug配置教程都是老版本的配置,均不能在最新版本中使用,所以强烈建议用户直接去XDebug的官网配置项介绍页面自行查看最新的配置方式。
吐槽一下,因为这个原因我折腾了一个下午加晚上。
下面是对XDebug主要用到的配置项的介绍:
xdebug.client_port:IDE环境的监听端口号,XDebug启动后会使用这个端口号与IDE环境交互,3.0.3版本中默认值已经变成了9003,可能是以前9000端口经常被其它程序占用的缘故,虽然9003已经比较冷门,多半可以直接使用默认值,但无论如何这里最好还是直接显示指定一个端口号,谁知道官方会不会变来变去的。
xdebug.client_host:IDE环境的主机名/IP,如果是Linux环境可以使用网络套接字,这在官方介绍页面里有详细说明。如果client_port,同样是用于与IDE通信的。
xdebug.log:XDebug运行时日志文件,包括与IDE建立通信失败等都会输出到这个文件,所以如果捣鼓了半天依然不能正常在IDE中断点调试,不妨先配置上这个选项自行查看日志记录。
我排查问题的时候配置了这个,但是依然没有日志产生,后来发现是xdebug.mode配置项的问题。
xdebug.mode:XDebug的运行模式,有多种可选,并且可以搭配使用,这里介绍我用到的三种:
trace:对函数调用进行跟踪。
debug:对代码进行步进(step)调试。
注意:如果没有启用debug模式是不能在IDE中使用断点进行步进调试的!这是个大坑,我就是因为这个折腾了好长时间。
develop:提供一些开发帮助功能,比如统计代码运行时间和内存占用等。
xdebug.start_with_request:是否在http请求产生的时候就启动XDebug。
xdebug.output_dir:XDebug跟踪到的函数调用等信息会输出到这个目录。
可以用这个目录产生的日志判断XDebug的安装问题,比如我的情况就是能产生函数跟踪日志,但是并不能产生XDebug运行时和IDE通信的那个日志,后来发现是因为xdebug.mode没有启用步进调试模式,XDebug就不会去尝试和IDE通信。
xdebug.force_display_errors:是否强制显示错误。
这个选项可以覆盖掉PHP中指定的错误输出模式,一般是不用设置的,我这里是因为XDebug一直不能和IDE正常通信,为了查错添加的。
现在可以验证是否配置好了XDebug,先重启Apache服务,通过在php文件中加入echo xdebug_info();的方式输出XDebug配置信息:
这样就表示已经安装好了xdebug模块。
VSCode设置然后在VSCode中安装两个PHP插件:
然后在文件>首选项>设置中的扩展下,选择PHP:
在打开的JSON文件中加入:
"php.validate.executablePath": "D:/software/Coding/xampp/php/php.exe", "php.executablePath": "D:/software/Coding/xampp/php/php.exe",再在工作区中添加网站根目录: