写在前面:
近期搭建了Windows PhpStorm Xdebug的调试环境。先是从网上找到几篇相关的文章看看,然后试着操作了整个过程,完成了环境搭建。过程很顺利,但结果不满意,问题是不能单步调试,一调试就卡住,不往下走了。
各配置项翻来覆去调整了好几次,最后找到问题的原因。问题出在Xdebug的版本与PhpStorm的版本不匹配,当时Xdebug是2.7.2,而PhpStorm是2018.2.3。后来我把Xdebug换成2.6.0的版本就可以单步调试了。
下面是分步搭建调试环境:
一:环境介绍
我的是本地Windows10 + PHP7.2.10 + xdebug2.6.0 + PhpStorm2018.2.3。假如你的PHP环境跟我的不一样,是没有任何关系的,只需找到PHP、Xdebug和PhpStorm版本间的最佳匹配就好。
还有一点,我为自己的本地项目做了个域名,hosts里添加一行 127.0.0.1 wordpress.cn。
二:安装配置Xdebug
安装Xdebug之前,首先确定要安装的Xdebug的版本。怎么确定Xdebug的版本呢,通过PHP的信息来确定(输出 phpinfo();)。
通过上图的Architecture和PHP Extension Build信息确定需要安装Xdebug的信息。打开https://xdebug.org/download.php 可以看到下图,对比图里文件名中的三段信息,找到相应匹配,不带TS的是NTS。我一开始搭建时用的Xdebug2.7.2版本,搭建完成了不能单步调试,一调试就卡住。我发现2.7.2版本的文件是2019年出现的,而PhpStorm是2018年的,我感觉问题出在这里,所以又安装了Xdebug2.6.0版本,问题才算解决了。
把下载的Xdebug文件放到PHP的扩展目录里(例如:I:\wnmp\php-7.2.10\ext),并修改名称为php_xdebug.dll。打开php.ini文件添加以下内容。
zend_extension=xdebug
[xebug]
;xdebug.profiler_append = 0
;xdebug.profiler_enable = 0
;xdebug.profiler_enable_trigger = 0
;xdebug.profiler_output_dir ="I:\wnmp\php-7.2.10\xdebug"
;xdebug.profiler_output_name = "cache.out.%t-%s"
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_autostart=1
xdebug.remote_log="I:\wnmp\php-7.2.10\xdebug.log"
xdebug.remote_mode = "req"
xdebug.remote_host = "wordpress.cn"
xdebug.remote_port=9001
xdebug.idekey= PHPSTORM
配置完成后,可以在phpinfo()里看到Xdebug的模块信息。
要注意xdebug.remote_enable,xdebug.remote_host,xdebug.remote_port,xdebug.idekey信息。
三:PHPstorm的配置-1
点击PhpStorm的【File】,然后选择【Settings】,就能看到Settings的窗口。找到【Languages & Frameworks】下面的【PHP】,进入PHP的设置窗口,如下图。
填写好后,记得保存。然后点击【Debug】,进入Debug的设置窗口,这里的Debug port跟php.ini里的xdebug.remote_port相同就好。
点击【DBGp Proxy】进入设置窗口,IDE key,Host跟php.ini里设置的相同就好。
点击【Server】,进入配置窗口。注意Host跟php.ini里相同即可,Debugger选择Xdebug。如下图。
四:PHPstorm的配置-2
点击【Run】,然后选择【Edit Configurations】,点击【+】,选择【PHP Web Page】,如下图。
接着进入配置窗口。Server就选择上面配置;Start URL就是项目入口文件了,一般都是index.php,输入框下面会显示完整的项目入口URL;Browser选择Chrome。如下图。
以上配置完成后,眼睛转向PhpStorm的右上角,在下拉框里选择你配置的debug名称,同时打开“电话”图标,点击绿色三角图标即可开始调试。如下图。
一个简单的调试事例,如下图。