NetBeans配置Xdebug 远程调试PHP
2015-08-18 18:51
441 查看
很多PHP程序员使用echo,dump等比较原始的方法调试,这是非常落后的。
几年前本人写过一篇:
linux版本:64位CentOS 6.4Nginx版本:nginx1.8.0php版本:php5.5.28xdebug版本:2.3.3
NetBeans版本:8.0.2
思想:本地写php代码,NetBeans自动上传到远程linux中运行并调试。这样做有几个好处:第一,本地往往是windows,很多时候windows和linux还是差异很大。第二,可以多人联调。
1.安装xdebug需要先去http://www.xdebug.org看看一些文档,xdebug作为php扩展安装# http://www.xdebug.org/files/xdebug-2.3.3.tgz# tar -xzf xdebug-2.3.3.tgz
# cd xdebug-2.3.3
# /usr/local/php/bin/phpize
# ./configure --enable-xdebug --with-php-config=/usr/local/php/bin/php-config
# make && make install
配置PHP如上图所示,xdebug作为php扩展安装好之后会在/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212目录生成xdebug.so文件,不同版本的php路径不一样。
修改php.ini文件
#chmod 755 /usr/xdebug-tmpxdebug.remote_host是本机IP,xdebug.remote_port是远程linux中xdebug开启的端口,需要注意防火墙需要打开。
重启php-fpm# killall php-fpm# /etc/init.d/php-fpm
查看phpinfo一定有xdebug的扩展才说明安装成功:
2.配置NetBeans
首先配置调试信息
再需要配置远程连接信息
点击“管理”弹出管理远程连接对话框。
点击添加可以新增一个远程连接,注意连接类型选择SFTP就可以了,这样就可以使用默认的root账号即可,否则需要自己架设FTP。
说明:如果新建PHP项目的时候已经设置好了就无需设置。
3.调试设置好上述几部以后,就可以在php代码中打断电,点击“运行”--“调试项目”,如果xdebug因为种种原因没有配置好,那么在NetBeans右下角会一直显示“连接中”。只有显示“运行”才说明是成功的,这时候就可以从监视窗口查看变量信息。
4.原理使用Xdebug的远程调试,Xdebug作为一个嵌入到PHP的程序,扮演着客户端的角色,而IDE则作为服务器。下面的动态图展示了连接建立的过程。
服务端的IP为10.0.1.2, 使用HTTP协议,端口为80
IDE在IP地址为10.0.1.42的机器上,
IDE监听9000端口,因此,
HTTP请求从运行这IDE的服务器上发起
Xdebug连接到10.0.1.42:9000
调试开始运行,返回HTTP响应
服务端的IP是10.0.1.2, 端口为80
IDE运行在一个动态IP的计算机上,因此设置
IDE监听端口 9000, 因此,配置
发送HTTP请求,Xdebug检测HTTP header中的IP地址
调试开始运行,产生HTTP响应
PHP使用Xdebug进行远程调试 这是官方文档翻译的。
其他参考:
在 NetBeans IDE 中调试 PHP 源代码
使用netbeans进行PHP团队开发和基于xdebug进行多人远程调试
几年前本人写过一篇:
NetBeans配置Xdebug
由于那篇文档还需要引用本人写的其他文档,感觉有些分散,所以这里重新写一篇完整的。linux版本:64位CentOS 6.4Nginx版本:nginx1.8.0php版本:php5.5.28xdebug版本:2.3.3
NetBeans版本:8.0.2
思想:本地写php代码,NetBeans自动上传到远程linux中运行并调试。这样做有几个好处:第一,本地往往是windows,很多时候windows和linux还是差异很大。第二,可以多人联调。
1.安装xdebug需要先去http://www.xdebug.org看看一些文档,xdebug作为php扩展安装# http://www.xdebug.org/files/xdebug-2.3.3.tgz# tar -xzf xdebug-2.3.3.tgz
# cd xdebug-2.3.3
# /usr/local/php/bin/phpize
# ./configure --enable-xdebug --with-php-config=/usr/local/php/bin/php-config
# make && make install
配置PHP如上图所示,xdebug作为php扩展安装好之后会在/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212目录生成xdebug.so文件,不同版本的php路径不一样。
修改php.ini文件
[Xdebug] zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/xdebug.so" xdebug.profiler_enable=on xdebug.trace_output_dir="/usr/xdebug-tmp" xdebug.profiler_output_dir="/usr/xdebug-tmp" xdebug.remote_enable=on xdebug.remote_handle=dbgp xdebug.remote_host=192.168.1.135 xdebug.remote_port=9008说明:xdebug.trace_output_dir和xdebug.profiler_output_dir需要增加权限
#chmod 755 /usr/xdebug-tmpxdebug.remote_host是本机IP,xdebug.remote_port是远程linux中xdebug开启的端口,需要注意防火墙需要打开。
重启php-fpm# killall php-fpm# /etc/init.d/php-fpm
查看phpinfo一定有xdebug的扩展才说明安装成功:
2.配置NetBeans
首先配置调试信息
再需要配置远程连接信息
点击“管理”弹出管理远程连接对话框。
点击添加可以新增一个远程连接,注意连接类型选择SFTP就可以了,这样就可以使用默认的root账号即可,否则需要自己架设FTP。
说明:如果新建PHP项目的时候已经设置好了就无需设置。
3.调试设置好上述几部以后,就可以在php代码中打断电,点击“运行”--“调试项目”,如果xdebug因为种种原因没有配置好,那么在NetBeans右下角会一直显示“连接中”。只有显示“运行”才说明是成功的,这时候就可以从监视窗口查看变量信息。
4.原理使用Xdebug的远程调试,Xdebug作为一个嵌入到PHP的程序,扮演着客户端的角色,而IDE则作为服务器。下面的动态图展示了连接建立的过程。
服务端的IP为10.0.1.2, 使用HTTP协议,端口为80
IDE在IP地址为10.0.1.42的机器上,
xdebug.remote_host被设置为10.0.1.42
IDE监听9000端口,因此,
xdebug.remote_port设置为9000
HTTP请求从运行这IDE的服务器上发起
Xdebug连接到10.0.1.42:9000
调试开始运行,返回HTTP响应
使用非固定IP,多个开发者
如果使用了xdebug.remote_connect_back指令的话,连接的建立过程是不同的:
服务端的IP是10.0.1.2, 端口为80
IDE运行在一个动态IP的计算机上,因此设置
xdebug.remote_connect_back为1
IDE监听端口 9000, 因此,配置
xdebug.remote_port为9000
发送HTTP请求,Xdebug检测HTTP header中的IP地址
调试开始运行,产生HTTP响应
多用户调试
Xdebug只允许你使用指定的IP地址(xdebug.remote_host)进行远程调试连接.他不会自动的连接回浏览器运行访问的机器IP,除非你是用
xdebug.remote_connect_back指令。如果你的开发者们在同一个服务器上的不同的项目上面进行开发,你可以使用Apache的每个目录中的
.htaccess功能指定
xdebug.remote_host指令,配置
php_value xdebug.remote_host=10.0.0.5。 但是,如果是多个开发者在同样的代码上进行开发的话,
.htaccess将无法完成该项功能。针对这个问题,这里有两个解决方案。第一个是你可以使用DGBp代理,对于如何使用这个代理,请查看多用户调试这篇文章。你可以在 ActiveState的站点 下载这个代理。这里有更多的文档在Komodo FAQ.第二个方案是可以使用
xdebug.remote_connect_back配置项(Xdebug 2.1之后引入)。更多参考:
PHP使用Xdebug进行远程调试 这是官方文档翻译的。
其他参考:
在 NetBeans IDE 中调试 PHP 源代码
使用netbeans进行PHP团队开发和基于xdebug进行多人远程调试
相关文章推荐
- 谈论Java原子变量和同步的效率 -- 颠覆你的生活
- Struts2 Struts2与servlet接口
- spring-boot
- 【Java】-基础-事件监听
- java判断方法超时
- Spring rmi
- Struts2 全局结果类型<global-results>
- Struts2 result 集类型列表
- eclipse中的.project 和 .classpath文件的具体作用
- java-String常用方法
- Java获取用户IP地址
- Android项目中使用Eclipse导出jar文件
- JAVA IO流(1)
- Struts2技术详解
- JavaWeb中实现删除修改
- java中的向上转型和向下转型
- NetBeans配置Xdebug 远程调试PHP
- 关于java中的泛型T和?的使用
- eclipse + maven 搭建springMVC+Spring+mybatis 系统
- java开发中加载配置文件