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

准备工作

要通过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/

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

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

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

通过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,所以需要等待一段时间。

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

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

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

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

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

<html> 



<body> 




<form method="POST"> 




<label>Name:</label> 




<input type="text" name="name"></input> 




<input type="submit" name="submit" value="Submit"></input> 




</form> 




<p> 




<?php   



if(isset($_POST['submit']))  


{  



 $name = $_POST['name'];  



 if(!empty($name)){  


 echo "Hello $name! ";  


 }else{  


 echo "Hello World! ";  


 }  


}  


echo "Welcome to WebSphere sMash.";  



?> 




</p> 




</body> 




</html> 

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

按照默认设置,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编辑器中是当前运行的代码信息。

利用PDT在Eclipse中调试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文件,内容如下:

<?php phpinfo();?> 


 

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

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

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

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

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

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

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

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

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

相关推荐