您的位置:首页 > 运维架构 > Apache

以不变应万变-- 如何根据你的Apache+php版本进行正确的Xdebug配置

2015-12-03 11:13 701 查看
一、前言
根据网上众多的配置教程,反复配置都没成功。其实配置成功关键与否在于针对不同的软件版本进行相应的配置。授人以鱼不如授之以渔,如果你的软件版本和笔者的不同,那么可以参考我提供的步骤,再结合你实际的版本做相应的调整就可以了。

二、配置环境
系统版本:Win7
phpstorm版本: 8.0.3
Xdebug版本: 2.1.2,PHP 5.3 VC9(32bit)
Chrome 版本: 46.0.2490.86 m
WampServer版本: 2.2(PHP 5.3.10, Apache 2.2.21)

三、安装步骤
1、选择正确的Xdebug版本。
选择正确的Xdebug版本是决定调试功能安装成功与否的关键。网上大多对如何选择Xdebug版本描述过少,其实这一步做好了,接下来的配置就相对简单很多。那如何选择Xdebug版本呢?
选择Xdebug版本要从三个角度来决定:
1)系统是32位还是64位?
2)php的版本是什么?
3)你的配置环境是否支持VC6、VC9、VC11?
以笔者的电脑配置环境为例,我的win7系统是32位,php版本5.3.10,登陆http://xdebug.org/download.php看到符合二者要求的有一大堆(见下图红圈部分):



那么符合配置环境的到底是哪个呢?
Xdebug.org提供了一个在线测试版本的方法,登陆http://xdebug.org/wizard.php,将你的phpinfo()代码输出的结果,全部复制粘贴到wizard.php的输入框中,点击提交按钮,Xdebug.org会给你合理的版本建议。
但很遗憾,估计是我的php版本太低,Xdebug.org并未告诉我应该选择哪个版本。这里给出几个选择的建议,供大家参考:
1)网上有些文章说VC9版本是用于IIS的,VC6是用于apche服务器的。这里根据我的实践,可告诉大家,VC9版本是说Xdebug程序是用VC2008编译的,VC6版本是用VC6编译的,VC11是用Visual
Studio 2012编译的。如果你的电脑是安装了apache,一般是把PHP作为一个Module load到apache中,那么以apache父进程-多子进程的工作模式,是需要进行线程安全检查的,所以如果是以这种方式执行php,选择ts版本;如果你的电脑使用IIS配置PHP,那么需要选择Non-Thread
Safe(NTS)版本。
2)如果你安装的apache版本在2.2以上,php在5.3以上,建议优先使用VC9或VC11版本;反之,建议优先选择VC6版本。
根据以上原则,笔者选择的是Xdebug
2.1.2,PHP 5.3 VC9(32bit)版本。

2、将下载后的xdebug文件复制到正确的目录下。

下载后的xdebug程序是一个dll文件。 将dll文件拷贝到你的php的ext或zend_ext目录下。我的是拷贝到“zend_ext”文件夹下,如下图所示。对于只有ext文件夹的朋友来说,就可以拷贝到ext文件夹下。



3、PHP正确安装xdebug扩展。

找到你的php.ini文件,做如下配置(仅供参考):
zend_extension = "C:/wamp/bin/php/php5.3.10/zend_ext/php_xdebug-2.1.2-5.3-vc9.dll"
[xdebug]
;是否开启自动跟踪

xdebug.auto_trace=
On
;是否开启异常跟踪
xdebug.show_exception_trace= On
;是否开启远程调试自动启动
xdebug.remote_autostart= On
;是否开启远程调试
xdebug.remote_enable =
On
;配置远程调试主机ip
xdebug_remote_host = "127.0.0.1"
;是否开启调试扩展信息
xdebug.extended_info=On
;是否开启调试内容
xdebug.profiler_enable
= On
;调试输出路径
xdebug.profiler_output_dir = "c:/wamp/tmp"
;调试插件dbgp
xdebug.remote_handler = dbgp
;远程调试的端口(默认9000)
xdebug.remote_port = 9000
;配置支持调试的ide
xdebug.idekey = phpStorm
;是否收集变量
xdebug.collect_vars= On
;是否收集返回值
xdebug.collect_return= On
;是否收集参数
xdebug.collect_params= On
;跟踪输出路径
xdebug.trace_output_dir="c:/wamp/tmp"

这里啰嗦几句,有三处也是极易出错的地方:
一是要找到正确的php.ini文件进行配置。我电脑上安装的是wamp,后来发现“C:\wamp\bin\apache\Apache2.2.21\bin”和“C:\wamp\bin\php\php5.3.10”两个文件路径下都有php.ini文件,但对于wamp而言,真正起作用的是“apache\Apache2.2.21\bin”路径下的php.ini文件,这点还需要读者留意;
二是配置“ zend_extension”的时候,注意要加引号,且文件路径是斜杠,而不是反斜杠。当然有人用反斜杠也是可以的,保险起见推荐用斜杠+引号格式;
三是配置远程调试的端口,请朋友查看是9000的端口是否被别的程序占用。查看方法请见百度经验“http://jingyan.baidu.com/article/3c48dd34491d47e10be358b8.html”。如果是被别的程序占用,建议改用9001或其他未被占用的端口试试。

4.验证PHP安装Xdebug扩展是否成功。
利用phpinfo(),查看输出是否有“xdebug”字样,如下图所示。如果出现了如下图的“xdebug”字样和相应的版本信息,则说明安装成功。如果没有出现“xdebug”,则原因很可能出现xdebug的版本选择错误,笔者之前反复安装没有成功,问题就出自版本的选择上。不知道如何选择版本的,建议读者多试试几个xdebug版本进行测试。



再对比下图红色部分的数据是否与php.ini的xdebug配置数据一致。如果一致则说明配置正确,否则建议进一步核查原因。



5.PhpStorm配置。
安装完php的xdebug扩展后,接下来就要在phpstorm上做好配置了。打开“File->"Settings...",进入“Languages&Frameworks->PHP”,进行配置。



"PHP lanuage level:"选择你的php版本,“Interpreter”要选择你的php.exe所在的路径。当出现下图“PHP version:5.3.10”和“Debugger:Xdebug 2.1.2”时,说明你在phpstrom上已经成功配置了Xdebug。如果没有成功安装,"Debugger"会显示"Not installed"。笔者完成前面4步时,选择了正确的php.exe路径,"Debugger"会显示"not
installed",无奈笔者先将"PHP executable:"的路径先设置为php_xdebug-2.1.2-5.3-vc9.dll所在的路径,后又重新选择php.exe的安装路径,“Not
installed”神奇地变成了“Xdebug 2.1.2”。



“PHP->Servers”请参考如下配置。



“PHP->Debug”请参考如下红框里的配置。Debug port要和php.ini的Xdebug端口配置一致。



“PHP->Debug->DBGp
Proxy”请参考如下配置。这里DBGp是一种在PHP和xdebug调试器之间传递通信的一种协议。注意要和前面php.ini的xdebug.remote_handler = dbgp、xdebug.idekey = phpStorm保持一致。



6.Chrome的Xdebug
helper插件配置。


做到这一步,笔者觉得还是挺繁琐的:D ,不过,Chrome作为php脚本语言的最终输出界面,必须要相应的支持xdebug功能,我们才能真正实现phpstorm调试功能。登陆http://www.chromein.com/crx_11294.html下载Xdebug
helper(1.3.0)插件,在chrome的“设置->扩展程序”下面,拖动下载的后的文件到里面去。如下两图所示。







成功安装后,会发现打开的页面输入栏里有个小虫子图标,对于我们要进行调试的页面,选择Debug模式,如下图所示。






7.开始你的调试之旅吧!


请参照如下设置进行调试。



8.验证你的phpstorm具备调试功能。
若发现Debugger窗口下“Frames”和“Variables”都有调试的相关信息,且Step Over、Step Into等按钮都是可用的,那么恭喜你,此时你已成功实现了phpstrome的调试功能了。



(全文完)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: