【问题标题】:Can't set up Xdebug with PhpStorm. Only index.php can catch the breakpoint无法使用 PhpStorm 设置 Xdebug。只有 index.php 可以捕获断点
【发布时间】:2014-10-26 15:51:29
【问题描述】:

我正在尝试使用 phpstorm 设置 xdebug 调试器。我在 Windows 7 上运行 xampp。php.ini 中的 Xdebug 部分:

[XDebug]
zend_extension = "C:\xampp\php\ext\php_xdebug-2.2.5-5.5-vc11.dll"
xdebug.profiler_append = 0
xdebug.profiler_enable = 0
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir = "C:\xampp\tmp"
xdebug.profiler_output_name = "cachegrind.out.%t-%s"
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "127.0.0.1"
xdebug.idekey = "PHPSTORM"
xdebug.remote_port = 10000
xdebug.trace_output_dir = "C:\xampp\tmp"

在 phpstorm 中我检查了这个:

另外,我已经设置了合适的端口:

之后我:

  1. 已创建书签以使用适当的 IDE 密钥 (PHPSTORM) 启动调试器(在 jetbrain 的页面上生成);

  2. 使用了谷歌浏览器的特殊扩展,也为此设置了 cookie:

最后,我什至禁用了我的防火墙(在此之前我尝试添加规则,但这没有帮助)。

我在这里写的,并没有帮助我捕捉断点。我点击了IDE中的“电话按钮”,这也没有帮助。而且,我想强调的是,来自 Xdebug 的传入请求也不是在第一次使用时出现的。

另外,我想提一下,只有 index.php 调试有效。任何控制器/动作都不会,但只有 index.php 会。

在 phpinfo() 中也存在 xdebug:

【问题讨论】:

  • 你有xdebug.remote_autostart = 1——不需要任何书签或类似的东西。我建议删除Settings | PHP | Servers 中的所有条目并重新开始(零配置方法:confluence.jetbrains.com/display/PhpStorm/…)。现在很难说出了什么问题——如果在路径中的某处使用了符号链接或类似的东西,你可能需要指定正确的路径映射进行调试(记住:xdebug 仅适用于最终/已解决的路径)
  • 要尝试的其他事情:将xdebug_break(); 放在正常断点不起作用的文件中(显然,不在设置断点的同一行上)——有什么区别吗?另外——带断点的行是什么样的:xdebug 不能总是在某些行上中断(例如,一些多行语句等)。如果仍然没有 - 启用 xdebug 日志记录并查看它的内容:xdebug.remote_log
  • 还有——带有端口号的屏幕截图:如果你同时禁用Force break... 选项——它会完全中断吗?如果不是——那么你肯定有错误的路径映射(或者文件在项目之外)。
  • 1.我已经这样做了,没有任何区别。 2. 用xdebug_break(); 捕获断点,但有问题(见链接)c2n.me/ja0etr 但问题出在哪里?路径 1 是正确的,那里的文本框 2 是什么? 3.如果我禁用,没有任何区别。你是对的,我在映射方面遇到了麻烦......
  • 顺便说一句:#1 路径通常应用于项目根目录:所有子文件夹都将继承它作为基础;然后您可以根据需要为子文件夹调整它。由于我没有看到您的完整路径...我可能只认为 1)您没有整个项目/根目录的路径映射 .. 和 2)该文件(控制器)不在您的 public 文件夹中没有映射。再说一次:对于本地项目(服务器和 IDE 在同一台计算机上),通常不需要路径映射。如果需要,则意味着符号链接/映射驱动器正在路径中的某处使用。

标签: debugging phpstorm xdebug


【解决方案1】:

看到这个:Map one directory path to another in PHPStorm

在 Settings -> PHP -> Server 中,映射所有需要调试文件的文件夹。

【讨论】:

    【解决方案2】:

    我通过手动将项目中的每个路径从远程路径映射到本地路径来解决此问题

    在我的例子中 phpstorm (windows) + yii2/xdebug (linux on vmbox)

    c:\phpstormprojects\yii\models -> /home/yii/apps/yii/models
    

    【讨论】:

      【解决方案3】:

      重要提示:确保您使用的是最新版本的 PHPStorm! 较旧版本的 PHPStorm 不能与较新版本的 XDebug 一起使用。您会遇到的一个常见错误是断点仅在 index.php 上起作用,而无法跨步或进入代码。

      最后,确保您使用的 XDebug 版本与您正在运行的 PHP 版本兼容。例如,PHP 7.3 和 7.4 使用 XDebug 2.9。

      90% 的人在使用 XDebug 时遇到问题是因为他们尝试使用的端口很忙,或者他们正在使用的版本与 IDE 或正在使用的 PHP 版本不兼容.

      【讨论】:

        【解决方案4】:

        嘿,经过一段时间的努力,我遇到了同样的问题,我发现问题出在我的 xdebug 版本上。我使用了错误的 xdebug 版本。所以在纠正我的错误后,我有以下设置:

        1. Xdebug 文件版本

        php_xdebug-2.7.0alpha1-7.2-vc15.dll

        1. Phpstorm 版本

        2017.1.4

        1. php.ini 文件
        zend_extension = F:\xampp\php\ext\php_xdebug-2.7.0alpha1-7.2-vc15.dll
        xdebug.remote_autostart = 1
        xdebug.profiler_append = 0
        xdebug.profiler_enable = 0
        xdebug.profiler_enable_trigger = 0
        xdebug.profiler_output_dir = "F:\xampp\tmp"
        xdebug.profiler_output_name = "cachegrind.out.%t-%s"
        xdebug.remote_enable = 1
        xdebug.remote_handler = "dbgp"
        xdebug.remote_host = "127.0.0.1"
        xdebug.remote_log = "F:\xampp\tmp\xdebug.txt"
        xdebug.remote_port = 9000
        xdebug.trace_output_dir = "F:\xampp\tmp"
        xdebug.remote_cookie_expire_time = 36000
        xdebug.idekey= "PHPSTORM"
        

        注意:-在 php.ini 文件末尾添加以上行并使用安装 XAMPP 的 PC 的驱动器路径

        1. xampp 版本

        3.2.2

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-07-28
          • 1970-01-01
          • 2020-04-09
          • 2022-01-09
          • 2019-07-31
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多