PHPstorm Xdebugger最全详细
0 Xdebug调试的原理(选看)
图0-1 单机调试原理示意图
图0-2 多机调试原理示意图
对于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版本
将下载的DLL文件拷贝到指定目录,按照页面上的提示即可
图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中的配置
(1)在文件->设置->语言与框架中->PHP->debug 设置端口,端口默认为9000,由于经常会被其他程序占用,这里建议设置为9001
图2-2 修改调试端口
(2)在DBGp Proxy中配置你的idekey,idekey就是你在配置文件中最后一项,host是你的服务器ip或者是已经可以解析的域名,port可以自选,一般默认选80就好了
图2-3修改调试协议DBGp的配置
(3)自己手动添加一个,Host填服务器ip,然后port是默认80端口,如果你修改过,你可以更改成你设置的web端口,debug选xdebug
图2-4 创建一个本地调试服务器
(4)测试一下配置是否成功
图2-4 创建一个调试服务器,用于与真正服务器同步
(5)测试成功
图2-5 配置成功
第一个红线是你的工程在服务器上的地址
第二条红线是你的工程的网络地址(最后的斜杠有木有都可以)
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调试的意义
调试对于PHP开发的真正意义,后续补充。
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
原文:https://blog.csdn.net/yinhangbbbbb/article/details/79247331
PHPstorm Xdebugger最全详细的更多相关文章
- Linux环境CentOS6.9安装配置Elasticsearch6.2.2最全详细教程
Linux环境CentOS6.9安装配置Elasticsearch6.2.2最全详细教程 前言 第一步:下载Elasticsearch6.2.2 第二步:创建应用程序目录 第四步:创建Elastics ...
- elasticsearch最全详细使用教程:搜索详解
一.搜索API 1. 搜索API 端点地址从索引tweet里面搜索字段user为kimchy的记录 GET /twitter/_search?q=user:kimchy从索引tweet,user里面搜 ...
- elasticsearch最全详细使用教程:入门、索引管理、映射详解、索引别名、分词器、文档管理、路由、搜索详解
一.快速入门1. 查看集群的健康状况http://localhost:9200/_cat http://localhost:9200/_cat/health?v 说明:v是用来要求在结果中返回表头 状 ...
- laravel使用手札——使用PHPStorm提升开发速度
laravel使用手札——使用PHPStorm提升开发速度 phpstormphplaravel 阅读约 4 分钟 PHPStorm安装 PHPStorm 使用手札——安装看这里 代码自动提示支持 ...
- sumatrapdf 软件介绍
sumatrapdf 软件介绍 介绍 支持PDF, ePub, Mobi, XPS, DjVu, CHM, CBZ 和 CBR格式的电子文件 仅支持Windows,原因见官网论坛 绿色版,小巧,于此 ...
- java笔试面试(转载)
Java面试笔试题大汇总(最全+详细答案) 2016-02-01 15:23 13480人阅读 评论(8) 收藏 举报 分类: Java面试题(1) 声明:有人说, 有些面试题很变态,个人认为其实 ...
- React同构起步
React同构从0到1 前言 如果你想快速做react同构的新项目建议你去了解next.js等成熟框架,本教程仅限于想了解如何从0开始实现一个同构环境过程的同学,对于想改造现有spa项目的同学也很有帮 ...
- PhpStorm中如何配置SVN,详细操作方法 - 郑加全的博客 - CSDN博客
登录|注册 郑加全的博客 目录视图 摘要视图 订阅 CSDN日报0711——<离开校园,入职阿里,开启新的程序人生> 征文 | 你会为 AI 转型么? ...
- phpstorm 配置 xdebug 详细教程
作者:半船 来源:CSDN 原文:https://blog.csdn.net/yinhangbbbbb/article/details/79247331 花了一周多时间最详细的整理了PHPSTORM+ ...
随机推荐
- [转]WAREZ无形帝国
一. 这会儿夜深了,他们昏昏睡去.随便哪栋建筑的某一个黑洞洞的窗口,你冷眼望去,没准就能看到一台白色的电脑,静静地卧在主人的书桌上.如果那主人睡得足够深,你就打开他的抽屉,现在你看到了什么?哦,我不是 ...
- ffmpeg使用分析视频
https://www.cnblogs.com/Finley/p/8646711.html 先存下
- 牛客练习赛33 D tokitsukaze and Inverse Number (树状数组求逆序对,结论)
链接:https://ac.nowcoder.com/acm/contest/308/D 来源:牛客网 tokitsukaze and Inverse Number 时间限制:C/C++ 1秒,其他语 ...
- impala常用语法
参考:https://www.w3cschool.cn/impala/impala_alter_table.html
- git log混乱之混乱操作
好几个分支 然后就混乱了 git log信息一坨屎 git 删除某次指定的提交 git reset只是在本地仓库中回退版本,而远程仓库的版本不会变化. 以删除master分支为例 #新建一个备份的分支 ...
- DevExpress v18.2版本亮点——Analytics Dashboard篇(一)
行业领先的.NET界面控件——DevExpress v18.2版本亮点详解,本文将介绍了DevExpress Analytics Dashboard v18.2 的版本亮点,新版30天免费试用!点击下 ...
- JDK7
https://docs.oracle.com/javase/7/docs/index.html
- Python---进阶---文件操作---搜索文件和保存搜索结果
### 编写一个程序,用户输入文件名以及开始搜索的路径,搜索该文件是否存在,如果遇到文件夹,则进入该文件夹继续搜索 - input 去接受用户输入的文件名和开始搜索的路径 - os.path.isdi ...
- 网络编程基础-socket的简单实用
目录 1.软件开发架构 客户端与服务端的作用 C/S架构: B/S架构: 2.网络编程 3.互联网协议 socket: socket的具体工作流程: socket(套接字)的内置方法 1.软件开发架构 ...
- linux运维、架构之路-tomcat日志切割工具 logrotate
一.Logrotate简介 1.Logrotate实际就是对日志进行切割的小工具,他通过让用户来配置规则的方式,检测和处理日志文件.配合Cron可让处理定时化:2.Logrotate预制了大量判断条件 ...