用过 Java、C# 等静态语言的同学调试代码经常是打个断点,然后轻松调试,而 PHPer 调试代码时经常是
echo $a;exit;
非常的不方便,有的同学有时候打完断点没删就给 commit 上去了,这就造成了很多困扰,有没有办法更优雅的调试呢?那当然有的,这里用到一个 PHP 模块 xdebug,xdebug 安装教程,使用它进行 HP 代码调试,能有效减少工作量和 BUG 调试时间,特别是在某些复杂的程序中,光靠看都无法找出问题
Xdebug 是一个开放源代码的 PHP 程序调试器 (即一个 Debug 工具),可以用来跟踪,调试和分析 PHP 程序的运行状况。
如果是集成环境,比如 phpstudy,就不需要自己安装了,直接环境 ->PHP-> 设置(PHP 版本号别搞混了)
![59d879a306920206d087960895376f41.png](https://img-blog.csdnimg.cn/img_convert/59d879a306920206d087960895376f41.png)
这里设置下端口号,凭自己喜好就行,我设置了 9001
![0caad06850ab51783ea121e765749338.png](https://img-blog.csdnimg.cn/img_convert/0caad06850ab51783ea121e765749338.png)
查看 phpinfo,搜索下,有 xdebug 模块就行了
接下来打开 phpstorm,ctrl+alt+s 打开设置
来到 debug 设置,将端口改成前面你设置的端口号(其他默认即可,当然也可以开启,看不懂英文可以翻译一下)
![b5d24d050665425649ee0f8d33a5e601.png](https://img-blog.csdnimg.cn/img_convert/b5d24d050665425649ee0f8d33a5e601.png)
在点开 Servers,点 + 号新建一个,名字随意,Host 填自己要 Debug 的域名(比如 localhost, 我这里填了一个虚拟域名),端口号默认 80 即可
![643c796fe81afaf4709d1b86489647e6.png](https://img-blog.csdnimg.cn/img_convert/643c796fe81afaf4709d1b86489647e6.png)
然后右上角有一个 Edit Configurations,点击打开
![7c880313c41b05580584d0ea8ead711e.png](https://img-blog.csdnimg.cn/img_convert/7c880313c41b05580584d0ea8ead711e.png)
点击加号,添加一个 PHP Web Page
![dd8bd573f3bf197b68f78e92629a51c0.png](https://img-blog.csdnimg.cn/img_convert/dd8bd573f3bf197b68f78e92629a51c0.png)
name 随意,Server 选刚才你配置的,startUrl 是启动的接口地址,如果我要 debug 一个下单的接口,于是我把他填写了进去,然后点击箭头所指向的 Validate
![ceb12d70702f6cc59ba7aa77f9a912dd.png](https://img-blog.csdnimg.cn/img_convert/ceb12d70702f6cc59ba7aa77f9a912dd.png)
第一个选项是调试本地的,第二个是调试远程的,我这里远程不讲了,免得搞晕你们
第一个输入框填写自己的项目目录,因为我这个是 tinkphp 框架,我把他指向了项目目录的 public 目录
第二个填写自己的域名,这里编辑器自动帮忙填写了
![4043f590391e8af088ec33f54edda06e.png](https://img-blog.csdnimg.cn/img_convert/4043f590391e8af088ec33f54edda06e.png)
点击 Validate 按钮,phpstorm 会帮忙检测配置是否正确,如果有错请按照提示修改
![a213b5496c165f2583479b4624f1504a.png](https://img-blog.csdnimg.cn/img_convert/a213b5496c165f2583479b4624f1504a.png)
最后点击右上角的这只臭虫,会自动打开浏览器进行调试,臭虫旁边的电话机如果变绿了表示正在监听 9001 端口
![da88cc63d4dab4b7ffc640f71cb6859f.png](https://img-blog.csdnimg.cn/img_convert/da88cc63d4dab4b7ffc640f71cb6859f.png)
这时 phpstorm 会自动打开 debug 控制台,点击箭头自动下一步,左边点击红点可以打断点
![be9f2beb3f3fb61a87419c6bfbb74342.png](https://img-blog.csdnimg.cn/img_convert/be9f2beb3f3fb61a87419c6bfbb74342.png)
如果想用 postman 呢?
把这个参数拿过来
![8054671a4bc56563d000c51545768a5b.png](https://img-blog.csdnimg.cn/img_convert/8054671a4bc56563d000c51545768a5b.png)
把这对 key-vlue 加入 postman 的参数内,点击 send 自动开启调试(postman 会一直处于发送状态中,直至断点调试完毕)
![d68aa81807d46386fee482041d18963c.png](https://img-blog.csdnimg.cn/img_convert/d68aa81807d46386fee482041d18963c.png)
debug 控制台简单说明
- 左边可以打断点,当代码执行到断点时会停止
![644bd655d85062676537c0d0ff54bb0e.png](https://img-blog.csdnimg.cn/img_convert/644bd655d85062676537c0d0ff54bb0e.png)
这个按钮点一下,会执行一行代码,但遇到函数会直接执行整个函数
![aba3e809b90a1e06f5fc84967beb22fd.png](https://img-blog.csdnimg.cn/img_convert/aba3e809b90a1e06f5fc84967beb22fd.png)
这个按钮也是执行一行代码,可以进入函数内部执行
![0692ebd35388b13e02cef34891686e21.png](https://img-blog.csdnimg.cn/img_convert/0692ebd35388b13e02cef34891686e21.png)
跳到下一个断点
![768a699e4e8f9708437f2a855cbc2a55.png](https://img-blog.csdnimg.cn/img_convert/768a699e4e8f9708437f2a855cbc2a55.png)
第一个页面可以很清晰的查看所有变量
![adec857086f5989cffd88d78c330bb90.png](https://img-blog.csdnimg.cn/img_convert/adec857086f5989cffd88d78c330bb90.png)
第二个页面可以打印变量,甚至可以执行对象函数方法(贼有用)
![79574fedc137517359fb6a7e04eef994.png](https://img-blog.csdnimg.cn/img_convert/79574fedc137517359fb6a7e04eef994.png)
第三个页面是查看输出
![110dd62d4f8bc8fdb3db52130b705057.png](https://img-blog.csdnimg.cn/img_convert/110dd62d4f8bc8fdb3db52130b705057.png)
问题总结
- 断点调试时,PHP 脚本执行超时后 Apache 自动断开连接,然后返回一个 500 错误
在 apache 的 http.conf 文件加入
FcgidIOTimeout 6000
phpstorm 使用 Xdebug 调试代码
更多PHP内容请访问:
八重樱:腾讯T3-T4标准精品PHP架构师教程目录大全,只要你看完保证薪资上升一个台阶(持续更新)zhuanlan.zhihu.com![82aad9bf9c3ef6e48c88d32a848e7ebe.png](https://img-blog.csdnimg.cn/img_convert/82aad9bf9c3ef6e48c88d32a848e7ebe.png)
以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要的可以加入我的官方群点击此处。