PHPStorm+Xdebug调试本地PHP脚本

版权声明:欢迎转载,请附上原文链接 https://blog.csdn.net/hfut_wowo/article/details/88419859

注意本文将要讲的是使用phpstorm和xdebug调试本地php的脚本,例如编写php脚本处理文本、测试程序等,并不是php的web程序。而web程序将在专栏中的其他文章中详细介绍。

环境

  • php运行环境安装了xdebug扩展,可以通过php -m | grep xdebug检查是否安装成功;
  • 安装phpstorm(有条件建议购买正版,支持正版);

Xdebug调试

  1. 首先在phpstorm编写脚本:
<?php
namespace test;

class TestClass
{
    public $test_attr1;
    private $test_attr2;

    public function __construct($test_attr1, $test_attr2)
    {
        $this->test_attr1 = $test_attr1;
        $this->test_attr2 = $test_attr2;
    }
}

$test = new TestClass('a', 'b');

echo $test->test_attr1;

exit;
  1. 从菜单栏Run->Edit Configuations进入运行环境的配置窗口,点击窗口左上角的+号,选择PHP Script
    在这里插入图片描述
  2. FIle栏点击右侧的选择按钮,选择当前脚本,点击确认,然后点击Apply->OK确认配置:
    在这里插入图片描述
  3. 成功之后工具栏上会出现一个名为Unamed的运行配置,旁边的运行和调试按钮可以点击:
    在这里插入图片描述
  4. 现在可以在代码左侧的行号旁边设置断点调试程序啦:
    在这里插入图片描述

One More Step

在本地调试模式下,是不需要配置任何参数的。因为phpstorm这个IDE帮我们做了很多事情。
该模式下调试的原理图如下:
在这里插入图片描述
可以将整个过程都看做在phpstorm里面进行的。对这个流程,我的理解如下:

  1. 点击Debug按钮,触发调试过程,phpstorm会调用php命令执行脚本,并根据phpstorm的配置指定若干xdebug参数,这一点可以在启动调试后的Console窗口看到:在这里插入图片描述
    在这个命令里指定的参数有:
  • remote_enable:启动远程调试
  • remote_mode:指定调试模式
  • remote_port:指定调试端口
  • remote_host: 指定调试host ip
    这些参数将在后续的Xdebug文档中详细介绍。
    最关键的是指定了host ip(127.0.0.1)和port(9000)。Script调试下,host ip应该是本机,而port(9000)是在phpstorm的配置里设置的,可以更改,在后续的remote debug模式下,特别需要关注这个设置。

无论你在php.ini里有没有设置xdebug参数(remote debug模式的常用手法),这里命令行将会覆盖这些参数的设置。也就是说会以这里指定的参数为准。

这样也就不难理解了,接下来:
2. php脚本执行的生命周期开始,由于php安装了xdebug扩展,xdebug会按照命令行指定的参数配置(127.0.0.1:9000)去请求9000端口;
3. 此时的9000端口正被phpstorm实现的xdebugclient监听,自然被它接收到了,之后就在phpstorm中触发了调试过程,一步一步调试,直到最后,这一点,可以在调试状态下查看9000端口得知:
在这里插入图片描述
4. 调试结束后,所有链接都断开,php生命周期结束,phpstorm的xdebugclient也停止对9000端口的监听;

OK,到这里,本地的scrip调试就弄得差不多了。虽然这种用法不常见,但对于我们了解phpstorm+xdebug的工作原理是很有帮助的。

感谢阅读~

猜你喜欢

转载自blog.csdn.net/hfut_wowo/article/details/88419859