【问题标题】:phpstorm xdebug with a symfony2 project带有 symfony2 项目的 phpstorm xdebug
【发布时间】:2015-06-22 15:51:18
【问题描述】:

我正在尝试使用 xdebug 和 phpstorm 调试 symfony2 应用程序。

我的本​​地开发环境是 Ubuntu 14.04 和 apache2,Xdebug 版本是 2.2.7

我在另一个 php(不是 symfony2)项目中使用了以下指南:

https://www.jetbrains.com/phpstorm/help/configuring-xdebug.html

https://confluence.jetbrains.com/display/PhpStorm/Zero-configuration+Web+Application+Debugging+with+Xdebug+and+PhpStorm

当我执行 bookmarlet 设置 cookie 并开始调试这个 symfony2 项目时,phpstorm 检测到传入的连接(我接受),但没有其他任何事情发生。它不会在任何断点处停止。

我有 symfony2 phpstorm 插件。我试图禁用它,但也一无所获。

这个answer 对我来说看起来不错,但也不是诀窍

我尝试的最后一件事是更改服务器调试配置,禁用路径映射。这样 phpstorm 开始调试,但它会中断 app_dev.php 文件而不是我设置的任何断点。

我被困在这里,任何想法都会被认可

更新

更多我没有提到的信息:

  • 我正在使用 firefox 我正在尝试调试开发环境
  • 断点位于我自己的控制器中,而不是供应商的控制器中。

更新

这是我的 xdebug 配置

[XDebug]
zend_extension="/usr/lib/php5/20121212/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_port="9000"
xdebug.profiler_enable=1
xdebug.profiler_output_dir="<AMP home\tmp>"

【问题讨论】:

  • 您要调试哪个环境?产品还是开发?您在哪些文件中设置断点?您的定制还是供应商提供的定制?
  • 谢谢@TomaszMadeyski 我正在尝试调试开发环境,断点在我自己的控制器中运行。我正在使用此信息更新我的问题。

标签: php symfony phpstorm xdebug


【解决方案1】:

我不知道您使用的是哪个浏览器,但是,使用 Chrome,我使用 Xdebug 帮助程序扩展。

安装扩展后,右键单击它 > 选项并选择 PHPStorm 作为 IDE。

然后,使用调试按钮附近的按钮开始侦听 PHPStorm 上的连接。

编辑

这是我的 XDebug 配置:

zend_extension=/usr/lib/php5/20121212/xdebug.so
xdebug.max_nesting_level = 1000
xdebug.collect_params = 1
xdebug.collect_return = 1
xdebug.remote_enable = 1

您确定 XDebug 已正确安装在您的机器上吗?

PHPStorm > Run > Edit Configurations... 时,添加一个 PHP Web 应用程序调试配置文件并这样填写:

  • 名称:Acme 项目
  • 服务器:apache2(您可能需要添加自己的 - 名称、端口、地址、调试器)
  • 起始网址:/app_dev.php
  • 浏览器:默认

按 OK 就完成了!

【讨论】:

  • 谢谢@Rybus,这很好。但我想继续使用firefox。我也在用浏览器信息更新我的问题。
  • 仅供参考。刚刚用 Chrome 试了一下,还是不行。甚至没有出现传入连接,尽管我认为这可能是因为我以前做过
  • 我刚刚编辑了我的答案,为您提供有关我的配置的新细节;)
  • 谢谢。正如我在问题中提到的那样,我使用 phpstorm 和 xdebug 调试除此之外的任何其他项目,因此 xdebug 正常工作。我更新了我的 xdebug 配置。我现在要检查你的,我只知道端口配置,但让我们看看。编辑:一无所获
  • 您的日志文件中有任何内容吗? (阿帕奇)
【解决方案2】:

我有一个类似的问题,再次证明是映射问题,使用 PHPStorm 远程调试 Symfony 2 项目。

如果 PHPStorm 无法映射 src 文件位置,它将在 app_dev.php 中的第一行代码中断(如果您设置了“在第一行中断”),然后继续通过设置的任何断点继续/src(例如控制器、模型等)并且不标记任何错误。

  1. 转到设置 -> 语言和框架 -> PHP -> 服务器
  2. 在左中窗格中选择您的服务器(或使用“+”添加)
  3. 勾选“使用路径映射(选择远程服务器还是使用符号链接)”
  4. 添加映射,以便映射 /app、/src 和 /web。这些可以是单独的映射,但如果可能的话,最好在 / 上设置一个涵盖所有这些的更高级别的映射。

一旦 PHPStorm 可以映射这些路径,它就会停止并设置断点并开始有意义的调试。

【讨论】:

  • 非常感谢@stanhope!到目前为止,我试图弄清楚大约 2 个小时!它就像一个魅力。请注意,仅映射app.php 文件将运行它,并且永远不会进入实际控制器,但会完成调试会话。
  • 对于第 4 点,您能否添加一个本地和远程映射的示例?由于入口点在 /web (所以 request / -> web/ )你用什么映射其他位置?我已经多次使用 xdebug,但在我现在使用的项目中它无法工作。如果我在第一行启用中断但从不在断点处停止,它将到达 app_dev.php。我在 phpstorm 上安装了 symfony 插件
【解决方案3】:

这是一个映射问题。以下是成功的步骤

  1. 在设置 > 语言和框架 > PHP > 服务器下禁用路径映射 > 取消选中“使用路径映射”
  2. 开始调试
  3. 著名的“远程文件路径‘path/to/script/on/the/server.php’没有映射到项目中的任何文件路径”终于出现了
  4. 然后我可以按照official guide 中的疑难解答部分设置路径映射

希望这对其他人有所帮助

【讨论】:

    【解决方案4】:

    如果您发现 PHPStorm 一直要求映射,请尝试在项目的最高级别创建一个映射,就像 @stanhope 提到的那样,这就足够了。

    我的第一个映射被错误地设置为 /web 中的 app_dev.php 文件,这意味着 IDE 一直要求我映射到供应商目录中的文件。

    例如/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Response.php

    【讨论】:

      【解决方案5】:

      我还必须注释掉类缓存的加载(symfony 2.7)。我是在web/app_dev.php临时做的

      //$kernel->loadClassCache();
      

      否则调试发生在bootstrap.php.cache 或断点不起作用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-07
        • 2016-12-30
        • 1970-01-01
        • 2015-02-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多