利用PDT在Eclipse中调试PHP应用实例

开发 后端
本文介绍如何利用PDT在Eclipse中调试PHP应用的实例。Eclipse中提供了PHP Development Toolkit(以下简称PDT)帮助使用Eclipse的开发者进行PHP应用的开发,但是联机调试PHP应用却并不容易。

时下,Eclipse作为最流行的集成开发环境之一,广受开发者尤其是Java开发者的青睐,51CTO也为读者们做过一次“Eclipse到底是个什么玩意”的连载。在连载中51CTO除了介绍Eclipse对Java开发的支持,在第二部当中还提到Eclipse提供了PHP Development Toolkit(以下简称PDT),帮助使用Eclipse的开发者进行PHP应用的开发,但在PDT中,调试PHP应用,尤其是联机调试PHP应用却并不容易,碰巧在sMash开发过程中找到了一些联机调试的方法,在这里分享给大家。

准备工作

要通过Eclipse开发调试PHP应用,当然Eclipse的开发环境是少不了的,在这里可以下载到Eclipse for PHP Developers。另外,如果采用sMash进行PHP的开发调试,需要先下载WebSphere sMash DE 并解压到sMash的安装目录。以下是下载地址http://www.projectzero.org/sMash/1.1.x/download/然后,在Eclipse中通过以下站点,更新WebSphere sMash feature for PDT 2.0.x https://www.projectzero.org/zero/indy.dev/latest/update/zero.eclipse.php/

安装WebSphere sMash feature for PDT 2.0.x后,需要在Eclipse的preference中(点击菜单Window -> Preferences便可进入)指定WebSphere sMash的安装目录(如图中的E:\apps\zero)

  

#p#

通过sMash进行调试

WebSphere sMash是一套Web应用程序的开发和运行环境,sMash中携带的P8运行时能支持PHP应用程序的运行,同时sMash为Eclipse提供的sMash开发环境也能很好的支持PHP应用程序的开发调试。我认为通过sMash开发调试PHP应用能带来三个好处:

PHP项目直接依赖于sMash运行环境,启动PHP项目就启动了sMash的Web服务器,不再需要应用部署的过程。

P8运行时自身携带PHP调试器,无需扩展就能支持PHP应用的联机调试。同时P8支持最新的Java运行时,PHP开发者不仅能调用PHP扩展库中提供的功能也能方便地调用Java类库中的丰富功能。

sMash项目以组件化的方式组织项目依赖,能以组建化的方式开发PHP应用,同时,由于sMash已在多个公共云和私有云服务上提供镜像,可以将PHP等脚本开发应用引入云计算。

不过,因为P8运行时并非支持所有的PHP扩展,所以一些非常用的PHP扩展库可能无法再sMash上运行。

要在sMash上调试PHP应用,首先需要在Eclipse中新建一个WebSphere sMash PHP application项目,第一次创建sMash PHP项目时,由于sMash需要从远程的repository中下载p8 php runtime,所以需要等待一段时间。

 

完成项目创建后可以看到如下目录结构

 

 config/php.ini中可以配置p8运行时的PHP扩展库
所有的PHP页面都应存放在public目录下,public目录下的所有文件都可以按照web url的方式在sMash应用服务器上进行访问。

在public目录下,可以创建一个演示用的php页面helloworld.php,文件内容如下:

  1. <html> 
  2. <body> 
  3. <form method="POST"> 
  4. <label>Name:</label> 
  5. <input type="text" name="name"></input> 
  6. <input type="submit" name="submit" value="Submit"></input> 
  7. </form> 
  8. <p> 
  9. <?php   
  10. if(isset($_POST['submit']))  
  11. {  
  12.  $name = $_POST['name'];  
  13.  if(!empty($name)){  
  14.  echo "Hello $name! ";  
  15.  }else{  
  16.  echo "Hello World! ";  
  17.  }  
  18. }  
  19. echo "Welcome to WebSphere sMash.";  
  20. ?> 
  21. </p> 
  22. </body> 
  23. </html> 

双击php代码段的第一行设置断点,右键单击php项目testphp,选择Debug As -> WebSphere sMash Application,就可以启动sMash服务器,并在sMash上调试该应用程序。

#p#

按照默认设置,sMash会监听8080端口上的请求,并转发给testphp进行处理。可以通过http://localhost:8080/helloworld.php 来访问上文新建的php页面。在访问页面的同时,Eclipse会进入sMash的Debug Perspective,由此就可以像在eclipse中调试Java Application一样调试sMash PHP应用程序,所有的运行状态都会反映在Debug Perspective中的各个视图中。Debug视图中可以看到PHP调用的Stack Trace以及运行的线程,Variables视图中罗列了当前运行状况下的变量信息,PHP编辑器中是当前运行的代码信息。

 

通过xdebug进行调试

由于PHP.net上提供的PHP运行时没有调试功能,因此如果需要在此运行时上调试PHP应用,则需要通过第三方扩展库进行。Eclipse for PHP Developers集成对xdebug的支持,因此推荐在php.net提供的运行时上安装xdebug然后通过eclipse进行调试。当然如果还没有安装php.net运行时,必须先安装Apache HTTP Server和php.net提供的PHP运行时。

要安装xdebug扩展,需要先获取php运行时的信息。创建一个test.php文件,内容如下:

  1. <?php phpinfo();?> 
  2.  

将test.php放在php运行时所在的http服务器上,访问test.php页面可以得到php运行时的信息。

复制页面,并将信息粘贴至此URL http://xdebug.org/find-binary.php 页面中的文本框。点击Analyse my phpinfo() output。就可以获得根据php运行时信息所生成的安装指南,根据安装指南,下载xdebug并设置完成php.ini,重启http服务器,xdebug就可以运作了。

 

用xdebug调试需要新建PHP项目。

#p#

 

创建完项目就可以在项目中,新建PHP页面并设置断点。通过右键点击PHP文件,选择Debug As -> Debug Configuration就可以开始配置调试器

 

新建一个PHP Web Page类别的配置,选择XDebug作为调试器,并选择服务器,图中的Default PHP Web Server是localhost。选择需要调试的php页面和在服务器端的位置。点击Debug,就可以通过访问在服务器上的php页面开始调试。因为Eclipse没有PHP页面的部署功能,因此需要开发者自己复制项目中的PHP页面到服务器端,并且确保服务器端的页面和Eclipse项目中的PHP页面的一致性。

下图就是Eclipse中的PHP Debug Perspective,其中的各个视图显示PHP代码的运行状态。

【编辑推荐】

  1. Eclipse倒地是个什么玩意
  2. Eclipse 3.6——Java开发者的新选择
  3. Eclipse 3.6版本正式发布 代号“太阳神”
  4. Eclipse 3.6新特性与应用详解
责任编辑:佚名 来源: developerWorks
相关推荐

2009-06-02 10:02:50

eclipse jboeclipse jbojboss for e

2009-06-17 17:44:41

Eclipse插件Sp

2009-02-04 09:04:58

EclipsePDT层次试图

2010-11-25 10:05:22

Visual StudSilverlightWCF

2010-06-12 16:41:10

BlackBerry开

2020-03-07 18:51:11

EclipseFedoraPHP

2009-06-02 15:20:16

eclipse tomtomcatplugitomcatplugi

2015-07-02 14:38:44

2009-12-02 19:51:54

PHP Switch语

2009-05-27 14:31:53

NetBeansEclipsPHP

2009-06-05 14:59:31

Eclipse中配置T

2009-09-11 13:03:48

Scope属性

2012-06-08 09:28:15

EclipseScalaAndroid

2011-09-13 17:44:00

Eclipse And

2011-03-22 09:45:56

Windows AzuSilverlight

2011-03-22 10:03:55

Windows AzuSilverlight

2019-07-18 11:00:45

自动化运维测试

2010-06-17 10:22:47

PHP

2009-11-26 10:48:59

PHP验证码

2023-09-28 11:42:15

点赞
收藏

51CTO技术栈公众号