phpstorm+xdebug调试详细教程
对于PHP开发,初来咋到,开发环境的搭建和理解感觉是最烦人的一件事了。不像JAVA,打开一个Eclipse就可以开搞,Php的Debug都要几个插件来配合工作。这些都是死的,好说。但是对于Xdebug的工作原理我一直是耿耿于怀,后来看了一篇神文Xdebug断点调试的工作原理详解。
Xdebug的工作原理可以总结为下面几个步骤
1)IDE(比如PhpStorm,下文所述的客户端)中已经集成了一个遵循BGDp协议(一个专门用来调试的协议)的Xdebug插件。当要debug的时候,点击一些IDE的某个按钮,启动这个插件。该插件会启动一个9000的端口监听远程服务器发过来的debug信息。
2)浏览器向Httpd服务器发送一个带有XDEBUG_SESSION_START参数的请求,Httpd收到这个请求之后交给后端的PHP进行处理(下面就忽略Httpd,直接把Php叫做Server)。
3)Php看到这个请求是带了XDEBUG_SESSION_START 参数,就告诉Xdebug,“嘿,我要debug喔,你准备一下”。这时,Xdebug这时会向来源ip客户端的9000端口(即客户端,也即是IDE)发送一个debug请求,然后客户端的9000端口响应这个请求,那么debug就开始了。
4)Php知道Xdebug已经准备好了,那么就开始开始一行一行的执行代码,但是每执行一行都会让Xdebug过滤一下。
5)Xdebug开始过滤代码,Xdebug在过滤每一行代码的时候,都会暂停代码的执行,然后向客户端的9000端口发送该行代码的执行情况,等待客户端的决策(是一句代码还是下一个断点待)。
6)相应,客户端(IDE)收到Xdebug发送过来的执行情况,就可以把这些信息展示给开发者看了,包括一些变量的值等。同时向Xdebug发送下一步应该什么。
1下载对应版本的xdebug
xdebug官网下载地址:https://xdebug.org/download.php
你需要仔细分析和选择要下载的对应版本,否则无法调试。由于非常容易出错,建议采用下面这种简单方法:
xdebug网站提供一个自动分析你系统对应的xdebug版本的页面,网址是 https://xdebug.org/wizard.php
图1-1 xdebug网站提供的一个自动分析系统对应xdebug版本的页面
在页面中需要粘贴进去php版本信息,也就是phpinfo()函数的信息,如下图:
图1-2 phpinfo();函数返回的信息
ctrl+A全选这个页面的信息,然后粘贴到第一个图片的页面中。
不知道这个页面如何出现的同学在你的php服务器程序目录下 创建一个phpinfo.php文件,只需一行代码
<?php phpinfo(); ?>
浏览器中输入 http://127.0.0.1/phpinfo.php 就出现图2 中的页面了。
图1-3 向页面中拷贝phpinfo()获取的信息
点击 analyse my phpinfo() output 按钮
图1-4 找到你需要下载的xdebug版本
图1-5 下载后拷贝到指定目录,并在对应的php.ini中末尾处添加图中第3小点的内容
到此为止,xdebug的下载和启用就完成了,重新运行 phpinfo.php 文件,在打开的页面中出现图1-6则说明安装正确:
注意问题
1phpinfo.php需要启动服务器后,通过浏览器访问。
2 php.ini文件中增加的行,等号前后有空格,字符串值可以有引号也可以没有引号。
zend_extension = C:\laragon\bin\php\php-7.1.7-Win32-VC14-x64\ext\php_xdebug-2.6.0-7.1-vc14-x86_64.dll
zend_extension = "C:\laragon\bin\php\php-7.1.7-Win32-VC14-x64\ext\php_xdebug-2.6.0-7.1-vc14-x86_64.dll"
(这是我本机地址,这里建议直接拷贝图1-5中网页给出的值)
2phpstorm中使用xdebug
2.1修改php配置文件
1 php服务器在本地的情况。
在php.ini文件的末尾处追加如下代码:
;xdebug库文件
zend_extension = "C:\laragon\bin\php\php-7.1.7-Win32-VC14-x64\ext\php_xdebug-2.6.0-7.1-vc14-x86_64.dll"
;开启远程调试
xdebug.remote_enable = On
;客户机ip
xdebug.remote_host="127.0.0.1"
;客户机xdebug监听端口和调试协议
xdebug.remote_port=9001
xdebug.remote_handler=dbgp
;idekey 区分大小写
xdebug.idekey="PHPSTORM"
xdebug.profiler_enable = off
xdebug.profiler_enable_trigger = off
xdebug.profiler_output_name = cachegrind.out.%t.%p
;idekey 区分大小写
xdebug.profiler_output_dir = "d:\tmp"
图2-1图中标红的地方因不同主机而不同,请注意
2 PHP服务器不是本机
这种情况我还没有试过,以后再补充,大家有做过的可以给我留言。
2.2 phpstorm中的配置
3调试使用
(1)新建一个运行调试配置
图3-1创建一个调试配置
点击“+”,创建一个 PHP Web Application的配置,右侧输入一个用于记忆的名称,选择服务器
(2)打开IDE的debug监听
图3-2 图中为关闭状态,单击后为打开状态
(3)开始调试
图3-3 断点生效
红色圆中有个对号,是说明改断点生效了
几点注意
(1)Apache服务器默认的端口是80,按照上面设置就可以了,Nginx默认是8080有URL的地方需要调整一下。URL的组成结构中包括端口号,只是默认值是80,很多时候省略了。
(2)遇到问题仔细分析一下,都是可以解决的,如果实在有困难,可以在评论区留言。
4调试的意义
5参考资料
1 phpStorm+XDebug进行断点调试的配置
http://www.chenxuanyi.cn/xampp-phpstorm-xdebug.html
2利用下面网页中的Start debug按钮在COOKIE中设置Xdebug所需的变量。
http://www.jetbrains.com/phpstorm/marklets/
3 Cannot accept external Xdebug connection:Cannot evaluate expression 'isset($_SERVER['PHP_IDE_CONFIG'])
http://devnet.jetbrains.com/message/5463083?tstart=0
4Xdebug调试原理
phpstorm+xdebug调试详细教程的更多相关文章
- 使用zend studio配置Xdebug调试PHP教程
这里看过上面的文章后写一下自己的想法. 最近安装了zend studio 10.5,下载了破解文件.开始是下载了10.0的版本,但是注册码不正确.所以只能安装最新的10.5了. 接下来进行PHP代码调 ...
- ROS连接ABB机械臂调试详细教程-ROS(indigo)和ABB RobotStudio 6.03.02-
在ROS industrial介绍中,给出了ROS和常用机械臂的连接方式.具体信息可以参考:http://wiki.ros.org/Industrial ROS连接ABB机械臂调试详细教程-ROS(i ...
- PHPStorm + Xdebug 调试PHP代码 有大用
星期四, 12/26/2013 - 19:54 - shipingzhong PHPStorm + Xdebug 调试PHP代码 http://e.v-get.com/2013-11-20 16:55 ...
- PhpStorm+xdebug调试——更新
之前写过一篇<PhpStorm+xdebug+postman调试>,但是经过后来一段时间的使用,发现有些累赘.这里介绍一种比较简单方便的操作. 在上一篇文章中有一段“ 7.设置Server ...
- macOS 下 PHPStorm + Xdebug 调试 Docker 环境中的代码
0x00 描述 宿主机是 mac mini,构建的项目在 docker 中,所以需要在 PHPStorm 上配置 Xdebug 进行远程代码调试. 0x01 环境 宿主机:macOS High Sie ...
- PHPStorm+XDEBUG 调试Laravel
首先输出phpinfo(); https://xdebug.org/wizard.php 打开然后查看适合你的调试扩展版本 ,目前支持到php7.2 整个页面ctrl+a 复制进去 然后下载 扩展文 ...
- phpstorm 断点调试 傻瓜教程
前言: 简单介绍下为什么要用断点调试,很多人说我在代码调试的部位用var_dump 或者 exit 或者print_r来进行断点,但是当项目足够大的时候这样的做法就比较费时费力,因为你断点后需要删除原 ...
- phpstorm xdebug调试设置样式
由于本人比较喜欢白底的phpstorm开发环境,所以XDEBUG断点调试,F8时默认是没有背景色的,phpstorm中的设置方式如下 files -> settings -> Editor ...
- phpstorm+xdebug调试代码
1工具 #phpstorm 前面有文章介绍如何安装 #phpStudy 官网下的2018最新的安装包,php环境使用的也是最新的php7.0nts 2开启php Xdebug拓展 开启拓展,phpSt ...
随机推荐
- 关于iOS APP转让
需要以下条件即可
- mysql之导入导出
1.使用工具,类似Sqlyog,Navciate等导入导出数据 2.使用mysqldump导入导出 2.1 导出 2.1.1 导出表数据和表结构 mysqldump -u用户名 -p密码 数据库名 & ...
- 分析HTTP请求以降低HTTP走私攻击HTTP数据接收不同步攻击的风险
写在前面的话 HTTP/1.1自1991年至2014年,已经走过了一段很长的发展历程: HTTP/0.9– 1991 HTTP/1.0– 1996 HTTP/1.1 RFC 2068– 1997 RF ...
- ASPack壳脱壳实验
实验目的 1.学会使用相关软件工具,手动脱ASPack壳. 2.不要用PEiD查入口,单步跟踪,提高手动找入口能力. 实验内容 手动对文件"ASPack 2.12 - Alexey Solo ...
- 【C# 线程】开篇 线程
概述 线程主要学习什么,通过一个月的摸索.终于总结出来了:学习Thread类涉及到学习Thread类涉及到线程单元状态: ApartmentState.GetApartmentState\SetApa ...
- Nginx平滑升级的详细操作方法
转至:https://blog.csdn.net/midion9/article/details/49684325 一.平滑升级概述Nginx方便地帮助我们实现了平滑升级.其原理简单概括,就是:(1) ...
- Flume介绍安装使用
APache Flume官网:http://flume.apache.org/releases/content/1.9.0/FlumeUserGuide.html#memory-channel 目录 ...
- VS Code调试C代码
1.前言 首先说明的是vscode是代码编辑器,并不是编译器,它本身并不能编译C语言. 在这里我们使用的是MinGW-w64作为C语言的编译器.MinGW-w64的前身是MinGW的全称是:Minim ...
- 分布式 PostgreSQL 集群(Citus)官方安装指南
单节点 Citus Docker (Mac 与 Linux) Docker 镜像仅用于开发/测试目的, 并且尚未准备好用于生产用途. 您可以使用一个命令在 Docker 中启动 Citus: # st ...
- 在kali中安装两个版本的python
在kali中安装两个版本的python 在kali中已经预装了两个版本的python,但是没有装pip(>︿<). 这时使用python或者python3表示python3:使用pytho ...