我的PHP环境是安装在虚拟机中。真机系统用的是windows。那么我要用XDEBUG调试代码,就得用XDEBUG的远程调试功能。

首先要给远程环境中安装XDEBUG扩展,具体方法:http://www.cnblogs.com/mysic/p/5993463.html

在配置XDEBUG之前,需要先了解下XDEBUG的工作模式,尤其是远程debug时的方式,XDEBUG是需要先和开发端建立连接,启动会话,然后通过相互间传递参数来实现的。。XDEBUG远程调试分两种,一种是单用户,一种是多用户。单用户直接和服务器连接,多用户debug涉及到DBGp协议。这里我只记录单用户,多用户以后用到再补充。

服务器端XDEBUG的设置如下(PHP.INI):

//开启远程debug功能
xdebug.remote_enable=1 //开发客户端的IP
xdebug.remote_host="192.168.71.1" //是否自动连接客户端并调试。开启后,当用PHPSTORM调试时不需要先初始化连接XDEBUG服务端(绿虫子按钮)
只要在提交的字符串中包含XDEBUG_SESSION_START的参数并在代码行中设置了断点就会自动开始debug
xdebug.remote_autostart=1 //开发客户端设置的用于连接服务端的端口
xdebug.remote_port=9090 //XDEBUG日志
xdebug.remote_log="/xxxx/xxx/xdebug_remote_log"

服务器端设置好之后,需要设置开发客户端(PHPSTORM):

一,配置的地方有两处,File-> Setting -> Languages & Frameworks -> PHP  下的 Debug 和 Servers

Debug,设置PHPSTORM的端口号,XDEBUG通过这个端口与PHPSTORM建立连接,在服务端的设置参数中已经设置了。

Servers,首先要给server起个名称。位置1,web服务器的访问地址; 位置2,是本地路径与远程路径的对应

二,代码进行debug时要和服务器的XDEBUG先建立会话连接。 上面说过,如果服务端设置了xdebug.remote_autostart=1,那么就无需通过建立连接了。

在建立连接之前,需要开启监听服务端连接:

三,配置DEBUG服务

1.选择“PHP Remote Debug”

2.填写名称后,选择使用的之前配置好的Debug Server.

3.该Debug配置项所使用的IDE key (XDEBUG_SESSION_START参数的值)。

四,在代码需要调试的地方打上断点,这个就不用说了,都应该知道的。

五,用PHPSTORM提供的REST Client工具去访问运行代码的URL:

注意,在这里访问参数中一定要有XDEBUG_SESSION_START这个参数,否则debug不会使用自定义的debug配置文件。这里传的参数就是之前设置的IDE key。如果XDEBUG_SESSION_START不传这个参数,而是随便传了一个参数,debug也会启动,但是将不会使用之前的debug配置(上图的“API DEBUG”),而是会根据访问的第一个文件自动建立一个debug session。

访问页面准备进入断点时,PHPStorm报错:Cannot accept external Xdebug connection: Cannot evaluate expression'isset($_SERVER['PHP_IDE_CONFIG'])';

导致此问题的一个可能原因是:服务器端的php.ini中配置了:

extension=/path/xdebug.so

应该只保留下面一个:

zend_extension=/path/xdebug.so

(windows下则是zend_extension=php_xdebug.dll,只保留这一项)

到此为止!

最新文章

  1. C#互斥体——Mutex
  2. UITabBarController的创建等基本方法
  3. HDU 4435 charge-station bfs图论问题
  4. cocos2dx游戏资源加密之XXTEA
  5. SQL技巧之排名统计
  6. HDU 2191 (13.12.2)
  7. 【Android - 进阶】之图片压缩
  8. html5的本地存储localStorage和sessionStorage
  9. vi 编辑器笔记
  10. 【转】Python 爬虫的工具列表【预】
  11. [MyBatis]DAO层只写接口,不用写实现类
  12. Dynamics CRM2016 Web API之创建记录
  13. 在PHP中如何把数组写成配置文件
  14. B树索引分裂
  15. 类图uml
  16. 10.1.翻译系列:EF 6中的实体映射【EF 6 Code-First系列】
  17. rpm -qa 查找文件
  18. netstat统计的tcp连接数与⁄proc⁄pid⁄fd下socket类型fd数量不一致的分析
  19. PHPCMS v9 手机版如何设置独立域名
  20. 03.基于IDEA+Spring+Maven搭建测试项目--常用dependency

热门文章

  1. HDU 3652 B-number (数位DP,入门)
  2. Connectivity
  3. linux文本处理工具及正则表达式
  4. JavaScript操作DOM
  5. macbook secureCRT终端中文乱码的问题
  6. 两个对象值转换的方法(BeanUtils.copyProperties与JSONObject.parseObject对比)
  7. 判断用户ip是否在指定的一个ip段内
  8. Linux运维笔记--第四部
  9. 使用xcode 8 调试ios10
  10. 【Git版本控制】GitHub上fork项目和clone项目的区别