一、背景介绍:
最近在了解网址导航项目,为了能够更加深入地了解被测对象,所以我选择了查看网址导航代码的方式进行,但是只是生硬地查看php源代码是比较生涩的,我希望能够通过IDE工具进行代码单步调试来了解整个网址导航的功能实现。
为了达成以上目的,我选择了phpstorm+xdebug来远程调试Linux上的代码。与之前白松分享的phpstorm+xdebug调试方法不同的是,前者调试的Webserver是在本地环境搭建了php+apache调试的,而我要面对的问题有:
1.网址导航的代码是部署在Linux虚机环境上的。
2.代码运行环境是:Linux+nginx+php-fpm+redis+superphp的环境支持
为了解决以上方法,采用了以下的方法。
二、配置方法:
1.在Linux虚机上编译配置xdebug
1)下载xdebug。访问http://xdebug.org/download.php,下载对应的xdebug源代码。
2)# tar -xvf xdebug-2.3.2.tgz
3)#cd xdebug
4)运行php目录/bin/phpize
5)配置./configure--enable-xdebug --with-php-config=/php的bin路径/php-config
6)make
7)make install
2.在Linux虚机上配置xdebug
在php.ini文件中增加如下配置:
zend_extension="/search/php5/lib/php/extensions/no-debug-non-zts-20121212/xdebug.so" //xdebug.so的路径,请根据安装的php目录来配置
[xdebug]
xdebug.idekey=PHPSTORM
xdebug.remote_connect_back = 1 //如果开启此,将忽略下面的 xdebug.remote_host 的参数
xdebug.remote_host=10.129.157.29 //注意这里是,客户端的ip<即IDE的机器的ip,不是你的web server>
xdebug.remote_enable=on
xdebug.remote_port = 9001 //注意这里是,客户端的端口<即IDE的机器的ip,不是你的web server>
xdebug.remote_handler = dbgp
xdebug.auto_trace = 1
xdebug.collect_includes = 1
xdebug.collect_params = 1
xdebug.collect_return = 1
xdebug.default_enable = 1
xdebug.collect_assignments = 1
xdebug.collect_vars = 1
xdebug.remote_autostart = 1
xdebug.show_local_vars = 1
xdebug.show_exception_trace = 0
3.下载phpstorm
4.在phpstorm中配置
1)配置Debug项:打开file->setings->php|Debug。在右侧的xdebug配置项中,配置与服务器xdebug一样的端口号,如上例的9001。
2)配置server项。
a.打开file->setings->php|Servers 在右侧点击+,添加server,host: web服务器的域名或ip ,端口一般为80。
b.勾选下面的 use pathmapping,在absolute path to the server填写服务器上代码所在的路径。这里一定要设置哦! 不然,会发生找不到文件而出错,导至调试终止 。
note:由于网址导航中还要引用superphp,所以在project中需要增加superphp,并且设置在服务器上superphp的路径。
3)配置WEB Application调试点:打开Run->EditConfigurations-> 增加一个 PHP WEBAPPlication 的调试点 。
至此,配置完毕!
5.在代码中设置断点后,点击Run->Debug,浏览器被调起,同时phpstorm中的断点被中断,之后就可以F5单步调试了。