PhpStorm XDebug 远程调试

现在我们自己公司的各种开发和测试服务器,都是使用阿里云的服务器。一些PHP的项目,无法在本地搭建完整的环境,在外网服务器上调试更方便定位问题。发现网上没有完整的关于如何配置PHPStorm和XDebug远程调试的资料,自己配置的过程遇到一些问题,写出来给大家做一个参考。

演示环境

本地开发环境:Mac Pro + PHPStorm 9.0

服务器的环境:Ubuntu 14 LTS + PHP 5.5 + XDebug 2.2.3

不管是Windows还是其它的Linux的版本,具体的配置差不多,一样可以作为一个参考。

准备工作

1. 开发环境上安装 PHPStorm,服务器上安装好PHP

2. 在服务端安装XDebug,Ubuntu上 apt-get install php5-xdebug。

3. 安装完XDebug后,在php.ini里面加入如下的XDebug配置,配置如下。

[xdebug]

zend_extension=/usr/lib/php5/20121212/xdebug.so

xdebug.remote_enable=1

xdebug.remote_host=127.0.0.1

xdebug.remote_port=7777

xdebug.idekey=PHPSTORM

上面每行解释一下

zend_extension,这个配置为xdebug的安装路径,这个根据自己具体的安装的情况填写。

remote_enable 和 remote_host 分别配置为1和127.0.0.1

remote_port,这个默认值为9000,如果这个端口被其它进程占用了就需要换一个。我这里因为配置了nginx和php-fpm,9000端口已经被占用,所以我换了一个7777。注意,这里的这个端口要和PHPStorm中的设置保持一致,如下图:

idekey设置为PHPSTORM,这个字符串在启动调试的时候要用到,后面再解释这个。

4. 验证一下配置,使用phpinfo看一下输出,查看输出里面是否有xdebug的内容。注意,如果之前有配置过比如zend debugger之类其它的调试工具,需要先从php.ini里面把其它的调试配置去掉,不能同时配置两个调试工具。

开始调试

调试的过程如下:

1. 第一步,先在PhpStorm里面开始监听调试请求,图标里面的从红色变成绿色,表示开始监听了。

点击变为如下:

2. 建立好断点。

3. 从开发环境上,创建一个到服务器上的SSH连接通道,Linux/Mac下使用下面的命令:

ssh -R 9000:localhost:9000 [email protected]服务器的IP地址

注意这个写法,一个是本地端口地址,一个是远程的端口地址,默认情况下都是9000。但是如果之前修改过,那么端口需要换。比如我这里端口改成了7777,命令就应该是如下的样子:

ssh -R 7777:localhost:7777 [email protected]

注意,第3步一定要在第1步之后,也就是说建立这个通道之前,必须先开始监听。

如果开发环境是windowds,那么需要使用putty去建立这个连接通道。具体的方法参考:https://confluence.jetbrains.com/display/PhpStorm/Remote+debugging+in+PhpStorm+via+SSH+tunnel

4. 激活服务端的调试器

通过在请求里面带上 XDEBUG_SESSION 参数,并且把参数值设置为之前XDebug里面配置的“idekey”的值,就可以激活服务端的调试。

例如,可以在POST或者GET参数里面加上 XDEBUG_SESSION=PHPSTORM,服务端就会启动调试了。 比如我们要调试 http://www.abc.com/test.php,那么访问链接http://www.abc.com/test.php?XDEBUG_SESSION=PHPSTORM 就可以启动调试了。

具体的原理是这样的,服务端收到请求后,XDebug会检查参数里面的XDEBUG_SESSION值是否等于“idekey”的值,如果相等,那么就说明需要调试,否则就不调试。这个参数也可以设置在Cookie里面。为了调试方便,可以把下面的两端脚本作为链接收藏到书签栏,每次如果要调试就调用第一段脚本在Cookie里面写入XDEBUG_SESSION参数,如果要停止调试,那么就调用第二段脚本移除XDEBUG_SESSION参数的值。

javascript:(function() {document.cookie=‘XDEBUG_SESSION=‘+‘PHPSTORM‘+‘;path=/;‘;})()

javascript:(function() {document.cookie=‘XDEBUG_SESSION=‘+‘‘+‘;expires=Mon, 05 Jul 2000 00:00:00 GMT;path=/;‘;})()

我自己的书签栏就是这么设置的:

5.开始调试

一切都弄好后,直接在浏览器里面访问服务端的页面,PHPStorm就会检测到调试连接并进入调试状态。

注意,需要先配置好一个部署,把本地文件和服务端的文件做好映射,不然会提示文件映射错误。

推荐参考链接

https://confluence.jetbrains.com/display/PhpStorm/Remote+debugging+in+PhpStorm+via+SSH+tunnel

https://confluence.jetbrains.com/display/PhpStorm/Zero-configuration+Web+Application+Debugging+with+Xdebug+and+PhpStorm#Zero-configurationWebApplicationDebuggingwithXdebugandPhpStorm-4.Activatedebuggeronserver

时间: 2024-11-04 20:15:40

PhpStorm XDebug 远程调试的相关文章

PhpStorm+xdebug远程调试Linux机器上的代码

一.背景介绍: 最近在了解网址导航项目,为了能够更加深入地了解被测对象,所以我选择了查看网址导航代码的方式进行,但是只是生硬地查看php源代码是比较生涩的,我希望能够通过IDE工具进行代码单步调试来了解整个网址导航的功能实现. 为了达成以上目的,我选择了phpstorm+xdebug来远程调试Linux上的代码.与之前白松分享的phpstorm+xdebug调试方法不同的是,前者调试的Webserver是在本地环境搭建了php+apache调试的,而我要面对的问题有: 1.网址导航的代码是部署在

XDEBUG 远程调试

我的PHP环境是安装在虚拟机中.真机系统用的是windows.那么我要用XDEBUG调试代码,就得用XDEBUG的远程调试功能. 首先要给远程环境中安装XDEBUG扩展,具体方法:http://www.cnblogs.com/mysic/p/5993463.html 在配置XDEBUG之前,需要先了解下XDEBUG的工作模式,尤其是远程debug时的方式,XDEBUG是需要先和开发端建立连接,启动会话,然后通过相互间传递参数来实现的..XDEBUG远程调试分两种,一种是单用户,一种是多用户.单用

xdebug远程调试原理分析

xdebug可以控制PHP程序的执行,这意味着xdebug可以在任何时候暂停或者恢复正在运行的PHP程序.当PHP程序被暂停的时候,xdebug可以获取到程序的有关 信息,比如变量的值等.xdebug也可以修改一个变量的值,然后再恢复暂停的程序,让其继续运行. xdebug配合IDE执行 可视化调试的流程 (类似于VisualStudio单步调试)被称为“远程调试”,是因为调试时有一个Server(xdebug)和一个Client(IDE),所以在调试的时候,被调试的PHP程序和调试PHP程序的

PHPStorm+XDebug进行调试图文教程以及解析wamp的php.ini设置不生效的原因

这篇文章主要为大家详细介绍了PHPStorm+XDebug进行调试图文教程,内容很丰富,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 笔者的开发环境如下:Windows8.1+Apache+PhpStorm+XDebug+Firefox(XDebug helper 1.4.3插件). 一.XDebug安装配置 (1)下载XDebug下载地址:http://www.xdebug.org/必须下载跟机器上安装的php匹配的版本才行.具体下载方法如下:将phpinfo网页的源代码拷贝到http:/

phpStorm配置xdebug远程调试

安装xdebug 下载xdebug可到 xdebug官网 下载与自己PHP版本对应的xdebug扩展 安装 [root] # cd /usr/local/src [root] # tar zxvf xdebug-2.6.0RC2.tgz [root] # cd xdebug-2.6.0RC2 [root] # /usr/local/php/bin/phpize [root] # ./configure --enable-xdebug --with-php-config=/usr/local/ph

phpstorm+Xdebug断点调试PHP 超好用!!!

PHPSTORM版本 : 10.0.3 PHP版本 : 5.5.12 xdebug版本:php_xdebug-2.2.5-5.6-vc11-x86_64.dll ps : php版本和xdebug版本一定要相对应 1. PHP安装xdebug扩展 php.ini的配置,下面的配置仅供参考,路径要换成自己的! [xdebug] zend_extension=”D:\wamp\php-5.6.2-x64\ext\php_xdebug-2.2.5-5.5-vc11-x86_64.dll” xdebug

在主机中通过xdebug远程调试Vagrant虚拟机中drush脚本的方法

改方法是调试drush所执行的php代码的方法,同样适用于普通的cli方式运行的php程序的调试. 1.首先需要调整cli方式的xdebug.ini配置: sudo vi /etc/php5/cli/conf.d/xdebug.ini [XDebug] zend_extension="/usr/lib/php5/modules/xdebug.so" xdebug.coverage_enable=0 xdebug.default_enable=0 xdebug.remote_enable

PHPStorm+XDebug进行调试

一.XDebug安装配置 (1)下载XDebug下载地址:http://www.xdebug.org/必须下载跟机器上安装的php匹配的版本才行.具体下载方法如下:将phpinfo网页的源代码拷贝到http://www.xdebug.org/find-binary.php,然后按照指导安装即可.如下图所示: 2)安装XDebug按照上图下载"php_xdebug-2.3.2-5.4-vc9.dll",将其复制到d:\php\ext\目录. (3)配置XDebug打开d:\php\php

配置 -- PHPstorm+Xdebug断点调试PHP

运行环境: PHPSTORM版本 : 8.0.1 PHP版本 : 5.6.2 xdebug版本:php_xdebug-2.2.5-5.6-vc11-x86_64.dll ps : php版本和xdebug版本一定要相对应 1. PHP安装xdebug扩展 php.ini的配置,下面的配置仅供参考,路径要换成自己的! [xdebug] zend_extension="D:\wamp\php-5.6.2-x64\ext\php_xdebug-2.2.5-5.6-vc11-x86_64.dll&quo