月度归档:2013年09月

使用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常用快捷键搜集》。

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


xdebug远程调试



转:http://blog.csdn.net/samxx8/article/details/7775843

phpstorm + xdebug 远程断点调试,详解。

XDEBUG配置:

1.安装 xdebug 略了。网上有很多资料。

重点写php.ini的配置

 [XDebug]

   zend_extension=”/usr/lib/php5/20090626+lfs/xdebug.so”

   xdebug.default_enable = On

   xdebug.collect_params = On

 xdebug.remote_connect_back = On           //如果开启此,将忽略下面的 xdebug.remote_host 的参数。 <一台webserver有多个开发者的工作目录的时候使用,如:p1.xx.com,p2.xx.com,p3.xx.com 。。。等。 >

   xdebug.remote_host = 192.168.59.104    //注意这里是,客户端的ip<即IDE的机器的ip,不是你的web server>

   xdebug.remote_port = 9900                       //      注意这里是,客户端的端口<即IDE的机器的ip,不是你的web server>

   xdebug.remote_enable = On

  xdebug.remote_handler = dbgp

  xdebug.remote_log = “/var/www/xdebug/xdebug.log”

 xdebug.remote_req = req

 xdebug.auto_trace = Off

 xdebug.remote_autostart = On

 xdebug.show_exception_trace = 0

 xdebug.collect_vars = On

 xdebug.collect_return = On

 xdebug.collect_params = On

 xdebug.var_display_max_depth = 15

 xdebug.show_local_vars = 1

 xdebug.dump_undefined = 1

 xdebug.profiler_enable = 1

 xdebug.profiler_output_dir = /var/www/xdebug

PHPSTORM 配置:

1.file->setings->php|Debug右侧。xdebug的那一块。 设置Debug port:9900(这里设置 的是,xdebug 吐出的debug信息,通过本机的什么端口传输。)

2.file->setings->php|Servers  右侧。  host: 你的web服务器的域名或ip ,端口,  下面的 use path mapping  意的是,你的项目的目录,对应服务器上的,什么目录?   这里一定要设置哦! 不然,会发生找不到文件而出错,导至调试终止。


3.Run->Edit Configurations-> 增加一个 PHP WEB APPlication 的调试点。  右侧: server 选择你上面建立的server.  starturl 设置你的入口文件。


至此,配置完毕!

这样的请求,可以注册一个调试客户端哦!

http://www.aihuxi.com/****.php?XDEBUG_SESSION_START=19192




点击,小虫子图标,即可,开始调试!