【问题标题】:PhpStorm debugger not stopping at BreakPoints; keeps waiting for xdebug _SESSION_PhpStorm 调试器不在断点处停止;一直在等待 xdebug _SESSION_
【发布时间】:2013-06-11 19:30:24
【问题描述】:

Updated question : PhpStorm | WebMatrix (IISExpress) | Xdebug.remote_port | — Which Port(s) to put where?


我正在使用 WebMatrix 和 IISExpress 在我的 Windows 机器上运行 localhost Web 服务器。我已经在其中安装了 PHP 和 Xdebug,它们都可以正常工作。

我有一个本地 WordPress 安装。

我现在正在尝试让 PhpStorm 使用 Xdebug 对其进行调试。

当我运行 PhpStorm 时,它会在浏览器中启动 Web 应用,并在浏览器中使用相关的调试参数。

IDE KEY 匹配

xdebug.remote_port 配置正确。 (后来我发现这是错的,但不是错的,应该是9000端口)

但似乎 Xdebug 永远无法与 PhpStorm 通信。 PhpStorm 一直在监听,执行完全运行,没有在任何断点处停止。

【问题讨论】:

  • 1) 调试是否有效(例如,即使在 CLI 模式/“PHP 脚本”类型的运行/调试配置中)? 2) PhpStorm 是监听 xdebug 端口的那个吗(你可以使用标准的netstat 或从 MS 网站下载 tcpview) 3) 你是否设置了路径映射(设置 | PHP | 服务器)-- PhpStorm 应该要求你当它收到 xdebug 请求时这样做? 4) 是否在 xdebug 端口上的防火墙中启用了 PhpStorm(因为连接到 PhpStorm 的是 xdebug)?
  • @LazyOne (1) 调试器无法在“PHP 脚本”类型中工作。它完全跳过断点。 Screenshot
  • @LazyOne (2) 是的,PhpStorm 正在监听,但 keeps listening。即使IDE KEYport 似乎设置正确。当我点击运行/调试(使用该 IDEKEY(用于 xdebug_SESSION ...))时,它会打开 iexplore。 [这是在不同的“webapp”运行/调试配置中。]
  • @LazyOne (1) 它在“PHP 脚本”类型中工作。不知道我之前是如何得出结论的/
  • xdebug.remote_port 用于 xdebug 和 IDE 之间的通信(xdebug 将尝试连接到此端口以建立调试连接)。它不能是网站正在运行的端口。这两篇文章应该可以完成这项工作:1) confluence.jetbrains.com/display/PhpStorm/… 2) confluence.jetbrains.com/display/PhpStorm/…

标签: php xdebug phpstorm


【解决方案1】:

这些行对于使其工作至关重要(在 php.ini 中):

zend_extension=/usr/lib/php/extensions/no-debug-non-zts-20121212/xdebug.so
xdebug.remote_autostart = 1 # <-------- THIS
xdebug.remote_enable = 1 # <----------- AND THIS

如果没有这些行,xdebug 将永远无法在 phpstorm 上工作 ;)

【讨论】:

  • 实际上,对于remote_autostart=0,XDebug 正在寻找一个名为XDEBUG_SESSION 的cookie。设置起来稍微复杂一些,但也可以(使用 PHPStorm)。 +1 更简单的选择。
  • 只是节省了我几天的拉毛时间。完美运行!
  • 像魅力一样工作。非常感谢!
  • 是的!谢谢!
  • 感谢这对我有帮助。
【解决方案2】:

尝试更改 php.ini 和 IDE 中的 xdebug 侦听端口。

运行 Mac Yosemite,对我来说,问题是我安装了自制软件,遵循使用 php-fpm 的指南,默认情况下使用端口 9000(与 xdebug 默认端口冲突)...更改我的 @ 987654322@ 到 9001 并更改 phpstorm 中的 xdebug 端口解决了这个问题,尽管我怀疑这个问题可能发生在任何 IDE 中的任何人身上。我用谷歌搜索了一天的大部分时间并没有看到这个解决方案(因为我相信它对安装方法非常具体)..但我希望它对某人有所帮助。

【讨论】:

  • 这拯救了我的一天。不是一天。 4天我一直在努力调试,问题是用自制软件安装引起的。我听从了你的建议,改变了端口,瞧! phpstorm 在断点处停止,终于:)
  • 你也拯救了我的一天。非常感谢。
  • 非常感谢!我安装了一个基于自制程序的教程,女巫也使用了 php-fpm,但没有注意到 9000 端口的东西……在这里浪费了几个小时……谢谢!
  • 为什么我没有早点看到你的帖子。非常感谢!
  • 只是想说声谢谢!一直在和这个作斗争。终于找到你的评论,然后高兴地在我家附近跑来跑去。
【解决方案3】:

我花了大约一个小时才注意到这个按钮没有被激活;)

“运行”->“开始监听 PHP 调试连接”

【讨论】:

  • 尽管我通常设置了常规调试配置并且不使用此按钮,但这对我来说是个问题。谢谢!
  • 天哪,这是我的 phpstorm 的问题。正在寻找几个小时。我以为它会像eclipse一样开始自动收听
  • 大量搜索!谢谢@Rotareti,你节省了我的时间!
  • 你是一个救生员!
【解决方案4】:

首先检查 xdebug 在哪个端口上工作,你可以在你的 php.ini 中的xdebug.remote_port=9123 下找到它。正如您在我的例子中看到的那样,它设置为 9123。
现在打开 PhpStorm 去 php 调试,看截图:

在 Xdebug 下你会找到 Debug 端口,确保它的值与 xdebug.remote_port 下的 php.ini 文件中的值相同(在我的例子中是 9123)。

希望对你有帮助

【讨论】:

    【解决方案5】:

    对我来说,它正在改变这条线:

    xdebug.remote_host=localhost 到 xdebug.remote_host=myComputerIP

    (Mac 用户:在终端运行 ifconfig 以查找您的 ip)

    【讨论】:

    • 127.0.0.1 无处不在,无需查找 ;)
    • 因为我正在调试 vagrant(guest box) 127.0.0.1 并没有成功。 ;)
    • 老兄的热门答案对我没有帮助,我拉了两天的头发,我希望我能投票上千次​​pan>
    【解决方案6】:

    如果其他人遇到这个问题并且正在使用 Vagrant,这就是最终为我解决的问题:

    xdebug.remote_host=10.0.2.2
    

    这需要是来自 Vagrant 框内的本地计算机的 IP 地址,并且 10.0.2.2 是默认值。如果你 ssh 进入你的 Vagrant 框,如果你想确认,它会显示你登录的 IP。

    我知道这与 OP 的特定设置没有直接关系,但这篇文章出现在很多 xdebug / PhpStorm Google 搜索中,所以希望这可以帮助其他人。

    【讨论】:

      【解决方案7】:

      可能是防火墙。

      第 572 天...仍然没有睡觉或吃饭...但我终于找到了罪魁祸首:Windows Defender!

      基本上,我有一个防火墙阻止 JetBrains IDE Support chrome 扩展通过默认的 127.0.0.1:63342 地址向 PhpStorm 发送数据。

      --- 编辑

      第 864 天...同样的问题再次发生,这次是在 Linux 上...但我终于找到了罪魁祸首:Ubuntu 防火墙!

      说真的,几个月后我又遇到了这种情况,使用的是 Linux,它又是防火墙。禁用防火墙解决了它sudo ufw disable - 如果您关心防火墙并希望使其保持启用状态,则必须深入研究为它创建某种白名单。

      【讨论】:

      • 谢谢,只是“sudo ufw disable”解决了我的 xdebug 问题
      • 这是我在 Windows 10 上的解决方案!打开 Windows Defender > 防火墙 > 允许应用程序通过防火墙 > 更改设置。然后确保列出的所有“PHPStorm”实例都已启用(对于公共/私有网络,无论您使用哪个)。
      【解决方案8】:

      PHPStorm 在 Run > Web Server Debug Validation 中有一个内置工具。

      它帮助我解决了我的问题。

      【讨论】:

        【解决方案9】:

        php.ini 中存在语法错误。还有额外的"quotes";colons;

        【讨论】:

          【解决方案10】:

          我也收到此错误消息。
          php.ini 也有问题,但更微妙。

          尝试像这样查找并删除一行

          extension=php_xdebug-...
          

          请考虑在此处查看我的答案以了解详细信息“Xdebug - command is not available”。

          【讨论】:

            【解决方案11】:

            我在 PHPStorm 中尝试在 Windows 上使用 XAMPP 测试 Laravel 项目时遇到了同样的问题。我不知道我到底做错了什么,但我最终确实让它工作了。我关注了step-by-step instructions on the PHPStorm site here

            我认为配置不正确的一件事是设置中的 PHP 菜单中没有设置解释器。

            我还在php.ini 中尝试了太多设置组合。这些是我在工作时的设置:

            zend_extension = C:\xampp\php\ext\php_xdebug-2.3.2-5.6-vc11.dll //as recommended from the Xdebug site itself 
            xdebug.remote_enable=1=
            xdebug.profiler_enable=1
            xdebug.profiler_output_name = "cachegrind.out.%t-%s"
            

            在我的运行/调试配置中,我使用了一个 PHP Web 应用程序设置,它只是从站点的根目录开始。 (起初,我认为附加的?XDEBUG_SESSION_START=&lt;xxxxxxx&gt; 是一个错误,但事实并非如此)。希望如果其他人面临类似问题,这可能会有所帮助。

            【讨论】:

              【解决方案12】:

              右键单击“控制台”选项卡并取消选中“专注于启动”(如下图所示)应该可以解决问题

              【讨论】:

                【解决方案13】:

                我遇到了一个问题,即一个项目可以运行,而另一个项目不行。我尝试了许多不同的配置,并尝试查看 xdebug 的日志等。此修复似乎解决了我的问题:

                尝试将 xdebug 的实际端口设置为 9123 而不是 9000。

                PHPStorm 的新版本 (9) 将其默认 xdebug 连接端口更改为 9123(PHPSTORM 配置,而不是实际的 xdebug 配置),这可能是有充分理由的,因为将 PHPSTORM 配置更改为 xdebug 默认 9000 并没有工作,但将它们设置为 9123 确实有效并解决了问题。

                【讨论】:

                • 因错误信息而被否决:“PHPStorm 的新版本 (9) 将默认 xdebug 端口更改为 9123” - PHPStorm 没有业务更改任何默认端口,并且不会这样做;配置发生在服务器端;并且 PHPStorm 需要在客户端 match 它。不要将您的特定配置显示为“默认”。
                • PHPStorm 有设置,这就是主题。 PHPStorm 显然没有改变 Xdebug 的实际端口。 PHPStorm 设置将 9123 作为默认的 xdebug 端口,它没有采用我的 xdebug 配置,因为我的 xdebug 配置设置为 9000,所以我假设 PHPStorm 将其自己的配置更改为默认值 9123(即尝试连接到 9123)。你会如何措辞?
                • 啊哈,好吧,现在我明白了。谢谢你的解释。
                【解决方案14】:

                我尝试了任何建议的技巧,最后我通过 127.0.0.1/script.php 而不是 localhost/script.php 和 bingo 调用了脚本!

                【讨论】:

                  【解决方案15】:

                  基于 peteclark3 的回答:

                  如果您有多个带有 xdebug 的 php-fpm 版本,例如 php5.6-fpm、php7.1-fpm,我认为一种解决方案 - 确保只有一个正在运行。我同时运行了 5.6 和 7.1。然后尝试将 7.1 更改为 9001 端口。但是如果我在 PhpStorm 中更改为 9001 端口,那么 5.6 开始无法正常工作,因为它侦听 9000。所以每次更改 php 版本时,可能需要更改 phpStorm 中的设置。所以我认为最好只运行一个 php-fpm 并且所有 php-fpm 版本都可以使用相同的端口。

                  【讨论】:

                    【解决方案16】:

                    此修复程序专门用于 xdebug 工作,但断点无法使用 docker

                    第 1 步(检查 xdebug 是否真的有效):

                    1. 进入 phpstorm 中的设置,然后进行调试,选中“在第一行中断...”框
                    2. 再试一次,如果它一开始就中断,脚本 xdebug 正在运行

                    可能是断点无法正常工作,因为它找不到文件。

                    第 2 步(检查您的路径映射是否设置正确):

                    1. 转到服务器(在调试之下)
                    2. 确保您已设置服务器并选择了“使用路径映射”
                    3. 确保您的 php 文件映射到 docker 容器中的正确路径。在我的案例中,文件被映射到 /var/www/files 但实际上在容器中它是 /var/www/app/files。

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 2018-03-31
                      • 1970-01-01
                      • 2019-07-31
                      • 2013-08-31
                      • 2018-07-23
                      • 1970-01-01
                      • 2015-09-11
                      相关资源
                      最近更新 更多