一个计算机技术爱好者与学习者

0%

好好学PHP:PHP调试之Xdebug+PhpStorm

1. 前言

该怎么强调调试的重要性呢?我们生病的时候,要去看医生,医生会通过各种仪器对我们进行检查,定位病因,然后给我们治疗。程序也会生病,生病的时候,作为医生(开发者)的我们,就要通过各种办法定位bug,然后修改代码。定位bug并且修改代码的过程,就是调试。

最简单直接的调试办法是摘出需要调试的部分,放入 main.php 中,然后运行脚本:php main.php
前提是调试环境要安装好php,检查方法:php -v

但是,这种方法并不适合项目的调试,因为项目中涉及到很多上下文,模拟起来会比较麻烦。这时候就需要调试工具出场了。

PHP的调试工具有很多,本文记录一下Xdebug的使用方法。配合使用的集成环境为laragon-1.0,IDE为PhpStorm-2016.2.1。

2. 启用Xdebug

1、启动laragon后,任务栏右键laragon图标,定位到PHP,然后单击php.ini。(或者直接到laragon安装目录寻找php.ini,然后打开它)

2、找到[XDebug],然后修改如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
[XDebug]
zend_extension=php_xdebug.dll
xdebug.profiler_append=on
xdebug.profiler_enable=on
xdebug.profiler_enable_trigger=on
xdebug.profiler_output_dir="C:/laragon/tmp/xdebug"
xdebug.profiler_output_name="cachegrind.out.%t-%s"
xdebug.remote_enable=on
xdebug.remote_handler="dbgp"
xdebug.remote_host="127.0.0.1"
xdebug.remote_port=9000
xdebug.trace_output_dir="C:/laragon/tmp/xdebug"
xdebug.idekey=PHPSTORM

3、访问http://localhost,查看phpinfo。

4、在网页中Ctrl+F,搜索“xdebug”,如果找到了xdebug的配置信息,则证明xdebug启用成功。

3. PhpStorm配置

1、打开phpstorm,File,Settings。

2、搜索“debug”,可以看到PHP下面的Debug,单击Debug。

3、在xdebug栏,Debug port默认端口为9000,一般不需要修改。同时,三个选项全部打钩。

4、展开Debug,单击DBGp Proxy,填入IDE key为PHPSTORM,Host为localhost,Port为80。单击OK,退出设置。

4. Debug配置

1、View,Toolbar,显示工具栏。

2、View,Tool Windows,Project,显示项目结构。

3、单击工具栏向下的小三角,Edit Configurations。

4、在新打开的Run/Debug Configurations窗口中,单击左上角加号,选择PHP Web Application。

5、右侧Server配置为本地Web服务器。

5. 开始调试

1、在PhpStorm中,单击代码左侧插入断点。

2、单击导航栏的电话,然后单击导航栏中的虫子,即可打开默认浏览器进入调试。

3、网页卡住,PhpStorm自动定位到断点处。

4、此时,我们就可以根据PhpStorm提供的按钮进行需要的调试。

6. XDEBUG_SESSION_START

在调试时,郝同学发现一个神奇的问题:
假设默认浏览器是chrome,那么在chrome中访问接口,PhpStorm会自动定位到断点处。
但是,如果这时使用firefox或postman访问同样的接口,则无法定位到断点处。

解决办法:
郝同学注意到,在PhpStorm打开默认浏览器时,url中带有参数,例如:
http://www.dsjyw.net/?XDEBUG_SESSION_START=10218

在firefox和postman中的接口地址后也加上XDEBUG_SESSION_START=10218,成功跳转到断点,问题解决。

7. 书签

有哪些 PHP 调试技巧?

如何调试PHP程序

Xdebug文档

Xdebug下载地址

php使用Xdebug进行调试

用 Xdebug 修正 PHP 应用程序中的错误

Xdebug 配置

phpstorm+Xdebug断点调试PHP

  • 本文作者: 好好学习的郝
  • 原文链接: https://www.voidking.com/dev-php-debug-xdebug/
  • 版权声明: 本文采用 BY-NC-SA 许可协议,转载请注明出处!源站会即时更新知识点并修正错误,欢迎访问~
  • 微信公众号同步更新,欢迎关注~