PhpStorm XDebug 远程调试

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

 

演示环境php

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

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

无论是Windows仍是其它的Linux的版本,具体的配置差很少,同样能够做为一个参考。浏览器

 

准备工做服务器

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

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

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

[xdebug]php-fpm

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 root@服务器的IP地址

注意这个写法,一个是本地端口地址,一个是远程的端口地址,默认状况下都是9000。可是若是以前修改过,那么端口须要换。好比我这里端口改为了7777,命令就应该是以下的样子:

ssh -R 7777:localhost:7777 root@21.23.222.113

注意,第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

相关文章
相关标签/搜索