windows上使用phpstorm调试webman极简教程

Ace华

php.ini设置

[Xdebug]
zend_extension = php_xdebug.dll
xdebug.mode=debug
xdebug.client_host=127.0.0.1
xdebug.client_port=9003

不需要设置dbgp,这个用于远程调试,最重要的就是一个xdebug.client_port=9003,这个端口默认是9003,其实也可以不写这句话,client_host 默认是localhost

phpstorm设置

只需要配置一个地方,那就是xdebug的调试端口设置为上面ini中写的client_port即可,如果上面没有写client_port,这里就写9003

xdebug下面的4个复选框可以都不勾选,如果勾选了中间的2个,你会发现,每次都会在框架的入口处停下,这个是相当不友好的。

下面这个dbgp可以不管,这个用于远程调试的,就是代码不在本地,调试linux上的代码时需要配置的,这里先不管

PHP cli解释器配置

PHP解释器需要安装xdebug,安装具体教程可以搜索,就是下载一个xdebug.dll的文件,配置到ini中,这里不具体说明

PHP安装完xdebug后,需要在CLI解释器中添加PHP,并一定一定要看到下面图中自动解析出xdebug的版本,如下图为xdebug 3.0.4

PHPSTORM添加一键调试配置

配置好后,调试时,先点击开始调试开关,变绿色后,再点调试,如下图

如果ini配置中的port更改的话,需要先断开,重新关闭再开启绿色开关后,再启动调试按钮。

开始调试

在需要调试的行上打上断点,如下图

你会发现,这个点是红色的,此时一定要注意,这个断点没有生效,没有生效,需要点击调试按钮,重新启动调试,或者,你在调试开始之前就先打上断点。点击调试按钮后,断点变为下图。

可以看到,断点变绿了,这个时候,断点才真正的生效了。

请求接口,可以看到如下图:


恭喜你,成功了,简单吧。为你自己鼓掌。

解决中断后进程不退出的小bug

虽然调试成功了,但如果使用久了话,你会发现,当点击右上角红色中断调试时,任务管理器中还是没有停止这个进程(但使用运行是可以正常停止的,就调试模式不行,猜测是因为xebug的原因),比如下图,我这个项目正常来说,是7个cli进程,但你看,会出现好多好多。

这里出现了13个,并且,无法正常再次调动调试模式。
所以,我们的思路就是,在每次启动之前,先检查有没有php.exe进程,如果有,则把所有cli的进程全部杀死,然后再启动调试。

1.在项目根目录新建一个bat,叫 kill cli.bat,内容如下:

@echo off
tasklist|find /i "php.exe"
if %errorlevel%==0 (
echo "has php cli"
    taskkill /F /IM php.exe
) else (
    echo "no php cli find"
 )

然后先右键运行一下这个配置,确保没问题,同时生成一个php配置

正确结果如下:

然后,配置调试模式运行前执行这个配置

后面,如果更改了代码,想要重启调试,则只需要点击一下那个红色调试按钮就好了。任务管理器中进程数量一直是正确的。

1160 2 1
2个评论

Ace华

windows 可以在这里下载 xdebug

https://xdebug.org/wizard

  • 暂无评论
binguosoft

试过,没有用

  • 暂无评论

Ace华

500
积分
0
获赞数
0
粉丝数
2023-02-14 加入
🔝