欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

最新最详细最简洁Eclipse调试PHP配置详解(Xdebug,Zend Debugger)

程序员文章站 2022-05-25 15:55:33
...
搬家注:该日志写于2011 年 04 月 07 日,Eclipse,PHP等版本号很多,更新也比较快,请注意文章中的版本。本文不一定帮您解决问题,但能给您一些解决问题的思路及一些概念。

最近开始做SRTP项目WebOS,于是又开始了PHP之旅。搭建PHP环境又用了一两天,一个字,烦。遇到了很多问题,从Apache+php+mysql的配置到 Eclipse+PHP+XDebug(Zend Debbuger也同时配置了)的开发环境搭建,各种Google,各种教程贴,各种问题帖,各种矛盾的说法,虽然大部分人都按自己说的解决了问题,但是同一个问题解答方法各异,弄得我也是一头雾水,突然觉得这大部分时间都在为Google添加利润点击广告罢了。

搜索了很多,也解决了不少问题,得到了很多感悟,不知从哪个说去,一点点来吧。关于配置Apache+php+mysql,我将在另一篇日志中说说我的经验。

先说说我的各种版本,搜索引擎最大浪费就在与很多很过时的东西,很多都在说Eclipse3.2,3.4,php5.1等等,于是各种悲剧,感觉和小白鼠像极了。

  • 操作系统:Win7 Ultimate

  • Eclipse:Eclipse for PHP Developers(Version: Helios Release,Build id: 20100617-1415)这里说一下,Pdt我没配,但是Debug插件的配置和eclipse关系不太大。

  • PHP:php5.2.17 TS(thread safety)vc6(刚从官网下的)官网上分两种版本5.3.6的vc9版本和5.2.17的vc6版本,vc9是在IIS下用的,而vc6是在apache下用的(左边有说明),每个版本又分为thread safe和non thread safe的(和下面的debug插件配置有关),一般推荐下载thread safe。

  • XDebug 2.1.1(官网)版本很多,不过有个链接可以帮你选择。(主要三个方面TS or not,vc6 or vc9, 32 bits or 64 bits). 我选择PHP 5.2 VC6 TS (32 bit) .

  • Zend Debugger: 这个最麻烦,需要注册才能下载,它在推广Zend Studio。插件名叫Studio Web Debugger,windows版本名字叫ZendDebugger-20100729-cygwin_nt-i386.zip,里面有各种版本的debugger,一定要注意5_x_x_和nts(这个是non thread safety),TS的要用5_2_x_comp(和Xdebug反了过来)。另外把dummy.php拷到根文档下(http://localhost:8081/dummy.php)为了在Eclipse中测试成功与否。

弄好各种版本之后,就开始配置了,就是一个php.ini的配置。

这里先说下Eclipse中调试的两种方式: Debug as PHP script 和 Debug as PHP web page。

Debug as PHP script是直接调用php.exe解释的,不用开apache也能调试(事实上和apache无关)。但是缺陷也很大,不能在浏览器中打开网页,也没办法得到cookie,post等的值,即$_COOKIE, $_REQUEST等(可以再命令行参数中舍,但是很不方便,也不好用)。

Debug as PHP web page其实就是一种特殊的远程调试,可以在浏览器中打开网页,然后执行,可以动态的得到cookie等值,我就是用这种模式调试的,不过既然是 Remote debugging,就要在配置中开起来,否则这种调试设了断点也不起作用。下面配置会说到。

好了,Xdebug的配置

[xDebug] ;这一行没有也没关系
zend_extension_ts = “C:\Program Files\PHP\ext\php_xdebug-2.1.1-5.2-vc6.dll” ;注意ts指的是thread safety,此版本的一定要有。最好写上文件的整个路径,相对路径问题很大,很可能出问题。

xdebug.remote_enable = On ;其实官网上的配置没有给这一句,如果不配置这项,那么就没办法使用Debug as PHP web page了,所以还是开了。

网上有很多项,我只配置了这两项也照常使用,因为我不知道网上说的其他项的意思,我就没配。当然,一可以去查官方文档,第二在phpinfo里面xdebug下每一配置项都列出来了,你想配哪项配哪项。

配置成功的标志,查看phpinfo,能看到下面两项

最新最详细最简洁Eclipse调试PHP配置详解(Xdebug,Zend Debugger)

看有Xdeug

最新最详细最简洁Eclipse调试PHP配置详解(Xdebug,Zend Debugger)

配置项挺多的,慢慢去研究吧

Zend debugger配置,php.ini中

[zend debugger]
zend_extension_ts = “C:\Program Files\PHP\ext\ZendDebugger.dll”;同样注意ts和完整的路径。
zend_debugger.allow_hosts=127.0.0.1,192,168.0.4;允许调试的主机IP,
zend_debugger.expose_remotely=always;就是远程调试,debug as php web page就要用这个

同样我也配置了上面三项就正常使用了。

配置成功的标志,查看phpinfo。

最新最详细最简洁Eclipse调试PHP配置详解(Xdebug,Zend Debugger)

最新最详细最简洁Eclipse调试PHP配置详解(Xdebug,Zend Debugger)

有这个就配置成功啦。

Eclipse的配置还没说呢,其实到这如果懂了Debug as php script和debug as php web page的原理Eclipse的配置也就很简单了,无非是在Eclipse选项-》php-》debug里面配置一下就好了,有php executables(php.exe),php servers注意端口(如http://localhost:8081),两个debug插件的端口(默认一个9000一个10000)就不要乱改了。另外,如果配置了Zend Debugger,注意把前面的dummy.php拷过去才能点击test Debbuger成功哦。下面在php文件上点击断点,在文件上右击Debug as 就可以开始了,对就这么简单。

总结一下配置的整个过程中容易出错的地方:

  • 版本的对应关系要对,如php和debug插件的版本一致。

  • 一定要注意ts(thread safe)和nts(none thread safe),有时候标注的是ts,另一个版本不标注;有时候标注的是nts,而ts就不标注。

  • 注意官方文档坚决的说明,Apache下一定要用php vc6版本的。

  • 两个插件中的zend_extension_ts中最好写上完整路径,相对路径这东西和环境变量有关,问题很大。

  • 配置debug插件成功与否与Eclipse无关,建议先配置能够在phpinfo中成功了再去在Eclipse中设置。

  • 莫名其妙的错误怎么办,最好的办法是查看apache错误日志:在 apache安装目录下的logs/eroror.log文件中有详细记录,这个我将它称作解决问题的终极大杀器,看了它,你一定明白了在哪区找错误,该搜索哪些问题。比如出现了failed loading extention “ext\ZendDebugger.dll” ,你是不是想到了apache没有找到这个dll文件或者我是不是搞错了dll文件是ts还是nts呢。这个解决办法我会在另一篇关于apache+php+mysql的文章中详细介绍。

题外话:开源软件的配置固然是繁,版本固然多,版本更新也快,软件的使用上就必然有点不得心应手了,尤其是各种软件组合在一起问题那就更多了。那么怎么解决这些问题呢,我们一般的做法是有那个问题搜索那个问题,看了一个个解决方案,一个个教程,而忽视了最根本的东西,官方文档,看了文档,你才能知其然,知其所以然。我在上面乐此不疲的提到,官方文档怎么说怎么说,就是因为我在一次次的像小白鼠一样试验着网上的各种教程的时候,最终还是官方文档帮我解决了各种问题,各种疑惑。想想现在,就是出了问题我也不怕,并且认为,一步一步像这样配置下来怎么会出问题呢。所以回归原点,才是我们解决问题的根本之所在。

注:既然我在标题中写了最新最详细最简洁的字眼,但是我的表述不一定准却,考虑也并非周全。之所以这样,是想和大家一起讨论,大家有什么问题都可以留言,我们一起来解决,让它最新最详细也最简洁,让更多的后来人少走点弯路。

以上就是最新最详细最简洁Eclipse调试PHP配置详解(Xdebug,Zend Debugger)的内容,更多相关内容请关注PHP中文网(www.php.cn)!

相关标签: Eclipse,PHP