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

 

搬家注:该日志写于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,能看到下面两项

看有Xdeug

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

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的配置还没说呢,其实到这如果懂了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的文章中详细介绍。

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

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

转载于:https://www.cnblogs.com/lspvic/archive/2011/05/27/2059938.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/275482.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

入门前端学习路线图【送书】

大家好,我是若川。记得点上方音频听小姐姐配音,超级好听。华章图书又赞助了书籍送福利给大家。本次送4本书的抽奖方式是:截止到9月6日(周一)20:00,在留言区留言任意内容。我会在留言区抽取「1位」关注我公众…

单选按钮设置为被选中状态_为什么要设置错误的按钮状态

单选按钮设置为被选中状态当正确的方法出错时 (When the right way goes wrong) Let’s say you want to create a click effect on an HTML button. The first idea that many people get is to do something that reproduces the feeling of the sound emitted by a real but…

「娃娃分享」-常见自校检分析实例.

自校检是许多软件的保护手段之一,对软件加个简单的壳再增加自校检在一定程序上可以抵挡住一大部分新手,不过,对许多人来说,这个保护已经很弱了。。下面讲几种常见的解决自校检方法,写的粗略,希望大家补充。…

用VC和MinGW导出dll的def和lib(a)文件

为什么80%的码农都做不了架构师?>>> 原文地址:http://zhangyafeikimi.iteye.com/blog/404580 有了dll文件需要导出def文件: pexports zlib1.dll > zlib1.def 有了dll和def文件,需要导出MinGW的.a文件:…

产品设计美学案例分析_美学在产品设计中的重要性

产品设计美学案例分析重点 (Top highlight)In one of my previous jobs, I had really interesting debates with the CEO regarding whether we should spend more time improving the way our app looks and feels. ‘How could he not care that the design is outdated?! …

即将到来的ECMAScript 2022标准

大家好,我是若川。周末分享一篇相对简单的文章。最近组织了源码共度活动:1个月,200人,一起读了4周源码,参与的小伙伴都表示收获很大。如果感兴趣可以点击链接扫码加我微信 ruochuan12。另外:昨天的推文入门…

c语言中二叉树中总结点,C语言二叉树的三种遍历方式的实现及原理

二叉树遍历分为三种:前序、中序、后序,其中序遍历最为重要。为啥叫这个名字?是根据根节点的顺序命名的。比如上图正常的一个满节点,A:根节点、B:左节点、C:右节点,前序顺序是ABC(根节…

动态库的创建与使用

1、动态库文件的创建 (1)编写源文件 (2)编译生成动态库 g -fPIC -shared -o libfile_operation.so file_operation.cpp 此编译过程分为两步,等同于下面的两个命令: g -c -fPIC file_operation.cpp …

ux设计中的各种地图_UX写作中的移情

ux设计中的各种地图Demetri Martin is a master of comedic situations. If you’ve never seen Demetri Martin是喜剧情境的大师。 如果你从未见过 him before, he has a sort of dry brand of observational humor, relying more on anecdotes than full stories, and often…

字符串搜索。HOJ1530 Compound Words。

stl set实现字符串搜索。。效率一般。(附二分搜索。) Compound WordsTime limit:1sec.Submitted:233Memory limit:32MAccepted:81Source: Waterloo ACM Programming Contest Sep 28, 1996 You are to find all the two-word compound words in a dictionary. A two-word compo…

字节3-1前端面试官自学Vue的正确姿势

大家好,我是若川。前不久和一个字节前端TL朋友聊天,说到大厂前端供需脱节的情况。特别是使用Vue框架的,因为简单易学好上手,但是能够深入理解的人并不多,大多都只停留在应用层面,缺乏更深层面的理解。尤其是…

苹果风格ui_苹果如何使Soft-UI成为未来

苹果风格ui重点 (Top highlight)Apple announced some pretty wild updates at WWDC 2020 today.苹果今天在WWDC 2020上宣布了一些相当疯狂的更新。 But technology aside, let’s focus on how their UI has changed. It went through the first bitmap representations, thr…

【数据结构】量子危机

问题 宇宙时间公元 5.55 亿年,由于某种原因两大联盟展开了激战(maxingc 联盟采用了微子技术): 邪恶的 maxingc 联盟采集好了微子能,就要运输。Maxingc 联盟的领袖 xc 此时才发现,自己的军事基地中由微子发射…

android 自定义menu背景,Android编程实现自定义系统菜单背景的方法

本文实例讲述了Android编程实现自定义系统菜单背景的方法。分享给大家供大家参考,具体如下:不多说,上图,见代码。package lab.sodino.menutest;import android.content.Context;import android.app.Activity;import android.os.Bu…

面试官问 async、await 函数原理是在问什么?

大家好,我是若川。这是 源码共读活动《1个月,200人,一起读了4周源码》 第四期,纪年小姐姐的第四次投稿。纪年小姐姐通过本次学习提早接触到generator,协程概念,了解了async/await函数的原理等。第四期是 学…

一步步优化JVM六:优化吞吐量[转]

2019独角兽企业重金招聘Python工程师标准>>> 原文:http://ganlv.iteye.com/blog/1571315 参考:http://www.myexception.cn/software-architecture-design/1455594.html 现代JVM是一个具有灵活适应各种应用能力的软件,尽管很多应用…

element-ui 网格_UI备忘单:列表与网格

element-ui 网格重点 (Top highlight)Grids or lists? That is the question we will look at in this cheat sheet. While they can be used anywhere in your site, we are going to look primarily at search results, catalogs and newsfeeds. Making this choice will de…

50行 koa-compose,面试常考的中间件原理原来这么简单?

大家好,我是若川。源码共读《1个月,200人,一起读了4周源码》 活动第五期是学习 koa 源码的整体架构,浅析koa洋葱模型原理和co原理中的koa-compose源码原理,阅读不到50行的koa-compose源码。这篇是izjing小哥哥的投稿。…

sqlite3源码编译到Android,实现SQLite跨全平台使用

文/何晓杰Dev(高级Android架构师)著作权归作者所有,转载请联系作者获得授权。初看这个标题你可能会不解,SQLite 本身就是一个跨平台的数据库,在这里再说跨平台有什么意义呢?其实不然,目前我就遇到了一个项目…

illustrator下载_平面设计:16个Illustrator快捷方式可加快工作流程

illustrator下载I know, I know — keyboard shortcuts sound so nerdy, and you’re a graphic designer, not an IT Director, why should you learn keyboard shortcuts?我知道,我知道—键盘快捷键听起来很书呆,而且您是图形设计师,而不是…