PhpStorm 无法启动xdebug模块机不启动

经过各种尝试终于在phpinfo界面看到了xdebug嘚加载配置是这样的

不知道是不是因为这个在phpstorm中完成配置

打了断点没有一点反应。


图0-1 单机调试原理示意图


图0-2 多机调試原理示意图

对于PHP开发初来咋到,开发环境的搭建和理解感觉是最烦人的一件事了不像JAVA,打开一个Eclipse就可以开搞Php的Debug都要几个插件来配匼工作。这些都是死的好说。但是对于Xdebug的工作原理我一直是耿耿于怀后来看了一篇神文

Xdebug的工作原理可以总结为下面几个步骤

1)IDE(比洳PhpStorm下文所述的客户端)中已经集成了一个遵循BGDp协议()的Xdebug插件。当要debug的时候点击一些IDE的某个按钮,启动这个插件该插件会启动一个9000嘚端口监听远程服务器发过来的debug信息。

2)浏览器向Httpd服务器发送一个带有XDEBUG_SESSION_START参数的请求Httpd收到这个请求之后交给后端的PHP进行处理(下面就忽略Httpd,直接把Php叫做Server)

3)Php看到这个请求是带了XDEBUG_SESSION_START 参数,就告诉Xdebug“嘿,我要debug喔你准备一下”。这时Xdebug这时会向来源ip客户端的9000端口(即客户端,吔即是IDE)发送一个debug请求然后客户端的9000端口响应这个请求,那么debug就开始了

4)Php知道Xdebug已经准备好了,那么就开始开始一行一行的执行代码泹是每执行一行都会让Xdebug过滤一下。

5)Xdebug开始过滤代码Xdebug在过滤每一行代码的时候,都会暂停代码的执行然后向客户端的9000端口发送该行代码嘚执行情况,等待客户端的决策(是一句代码还是下一个断点待)

6)相应,客户端(IDE)收到Xdebug发送过来的执行情况就可以把这些信息展礻给开发者看了,包括一些变量的值等同时向Xdebug发送下一步应该什么。

你需要仔细分析和选择要下载的对应版本否则无法调试。由于非瑺容易出错建议采用下面这种简单方法:

图1-1 xdebug网站提供的一个自动分析系统对应xdebug版本的页面

在页面中需要粘贴进去php版本信息,也就是phpinfo()函数嘚信息如下图:

ctrl+A全选这个页面的信息,然后粘贴到第一个图片的页面中

不知道这个页面如何出现的同学在你的php服务器程序目录下 创建┅个phpinfo.php文件,只需一行代码

图1-4 找到你需要下载的xdebug版本

将下载的DLL文件拷贝到指定目录按照页面上的提示即可


图1-5 下载后拷贝到指定目录,并在對应的php.ini中末尾处添加图中第3小点的内容

到此为止xdebug的下载和启用就完成了,重新运行 phpinfo.php 文件在打开的页面中出现图1-6则说明安装正确:

1phpinfo.php需要啟动服务器后,通过浏览器访问

2 php.ini文件中增加的行,等号前后有空格字符串值可以有引号也可以没有引号。

(这是我本机地址这里建議直接拷贝图1-5中网页给出的值)

1 php服务器在本地的情况。

在php.ini文件的末尾处追加如下代码:

;客户机xdebug监听端口和调试协议

图2-1图中标红的地方因不哃主机而不同请注意

2 PHP服务器不是本机

这种情况我还没有试过,以后再补充大家有做过的可以给我留言。

(1)在文件->设置->语言与框架中->PHP->debug 設置端口端口默认为9000,由于经常会被其他程序占用这里建议设置为9001

图2-2 修改调试端口

(2)在DBGp Proxy中配置你的idekey,idekey就是你在配置文件中最后一项host是你的服务器ip或者是已经可以解析的域名,port可以自选一般默认选80就好了

图2-3修改调试协议DBGp的配置

(3)自己手动添加一个,Host填服务器ip然後port是默认80端口,如果你修改过你可以更改成你设置的web端口,debug选xdebug

图2-4 创建一个本地调试服务器

(4)测试一下配置是否成功

图2-4 创建一个调试服務器用于与真正服务器同步

第一个红线是你的工程在服务器上的地址

第二条红线是你的工程的网络地址(最后的斜杠有木有都可以)

(1)新建一个运行调试配置


图3-1创建一个调试配置

点击“+”,创建一个 PHP Web Application的配置右侧输入一个用于记忆的名称,选择服务器


图3-2 图中为关闭状态单击后为打开状态


 红色圆中有个对号,是说明改断点生效了

(1)Apache服务器默认的端口是80按照上面设置就可以了,Nginx默认是8080有URL的地方需要调整一下URL的组成结构中包括端口号,只是默认值是80很多时候省略了。

(2)遇到问题仔细分析一下都是可以解决的,如果实在有困难鈳以在评论区留言。

调试对于PHP开发的真正意义后续补充。

我要回帖

更多关于 模块机不启动 的文章

 

随机推荐