使用netbeans进行PHP团队开发和基于xdebug进行多人远程调试

转:http://starlight36.com/post/netbeans-use-for-php-team-with-xdebug

不少的非单纯PHP架构的网站系统中,PHP开发的Web系统,往往对特定的服务器环境有依赖,例如使用php开发某些面向开放平台的系统,或者带有支付接口功能的系统,都需要在真正的服务器环境上进行开发与调试。2011年中国PHP技术高峰论坛上,金山技术运营中心技术经理张宴老师介绍了PHP在金山游戏运营中的一些应用实践(传送门:2011中国PHP技术高峰论坛:PHP在金山游戏运营中的应用),在其中提到了PHP的开发团队,使用一致的Linux服务器作为开发调试平台,这样所有开发者可以使用一致的配置文件,也可以进行某些依赖于服务器的开发和测试。

文中张宴老师提到使用本地nginx服务器+远程fastcgi服务器,将本地的共享文件夹映射到远程服务器的模式,在具体实践中我稍作修改:

  1. 将Web服务器和PHP-FastCGI只架设在Linux端。
  2. 将Linux服务器上的用户工作目录建立共享,映射为开发者Windows上的虚拟驱动器。
  3. 开发者通过同样的地址访问测试,在Nginx里面配置根据来访者IP地址选择root目录。

这样一来,开发者端只需要IDE环境和映射网络驱动器,在服务器端为其建立相应的SMB账号和以开发者IP命名的工作目录。例如开发者A的IP为192.168.137.101,那么他访问192.168.137.10开发服务器时,WebRoot为/home/192.168.137.101。

但是实践中发现这么做有个问题存在,即SMB服务器的读写速度太慢,由于工作区的代码副本包含SVN信息,所以SVN提交或者更新时,经常会出现超时失败的情况。后来研究Netbeans之后,发现其自带强大的远程开发调试功能。方案大致如下:

Netbeans中设置每次保存时,或者运行时将修改通过SSH的SFTP服务上传至测试服务器,开发者可以通过Xdebug进行调试。具体设置步骤如下所述:

配置Xdebug,首先我们来编译安装Xdebug:

wget http://xdebug.org/files/xdebug-2.1.4.tgz
tar xvf xdebug-2.1.4.tgz
cd xdebug-2.1.4
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install 

打开php.ini文件,为其增加Xdebug小节:

[xdebug]
zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so"
xdebug.remote_enable = 1
xdebug.remote_connect_back = 1
xdebug.remote_port = 9001
xdebug.remote_handler = dbgp

需要说明的是,与大多数推荐的Xdebug设置不同,配置中并没有制定remote_host,而是使用了connect_back方式。这样的设置可以允许多人同时进行调试。具体的说明请参考手册:http://xdebug.org/docs/all#communication

在Netbeans中设置与Xdebug通讯的端口:菜单 【工具】-【选项】

接下来以创建一个项目为实例说明。首先在工作区右键选择【新建项目】,打开新建项目对话框:

进行项目基本信息的设置:

设置测试运行模式:

设置远程开发主机:

点击【是】接受密钥:

测试连接成功:

返回继续设置远程开发主机:

完成设置:

到这里,一个可以进行远程调试的项目就建立完成了。接下来我们运行测试:

这时如果修改的文件没有被上传,将会提示上传相关文件:

调试已启动:

对于已经存在的项目,或者从SVN上检出的项目,设为远程调试,可以在项目上右键,选择【属性】,在【运行配置】中进行设置:

关于如何在Netbeans中直接使用SVN,我已经在之前的文章《使用NetBeans进行团队合作PHP项目开发》中进行了说明。想要快速上手Netbeans,还可以查看这篇文章《Netbeans常用快捷键搜集》。

在上传文件时会提示是否接受密钥,切换到“保存时上传”后,只有第一次会提示。


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页