带有 symfony2 项目的 phpstorm xdebug

phpstorm xdebug with a symfony2 project

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

我本地的开发环境是Ubuntu14.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 文件中中断,而不是我设置的任何断点。

我被困在这里,任何想法都会很感激

更新

更多我没有提到的信息:

更新

这是我的 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>"

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

安装扩展后,右键单击它 > 选项和 select PHPStorm as 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(您可能需要添加自己的 - 名称、端口、地址、调试器)
  • 开始 URL : /app_dev.php
  • 浏览器:默认

按确定,大功告成!

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

  1. 在设置 > 语言和框架 > PHP > 服务器下禁用路径映射 > 取消选中“使用路径映射
  2. 开始调试
  3. 著名的“Remote file path ‘path/to/script/on/the/server.php' is not mapped to any file path in project”终于出现了
  4. 然后我可以按照 official guide 中的故障排除部分设置路径映射

希望这对其他人有帮助

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

如果 PHPStorm 无法映射 src 文件位置,它将在 app_dev.php 中的第一行代码处中断(如果您已设置 'Break on first line'),但随后继续直接通过 /src 中设置的任何断点(例如控制器、模型等)并且不标记任何错误。

  1. 转到设置 -> 语言和框架 -> PHP -> 服务器
  2. Select 您的服务器位于左中窗格(或使用“+”添加)
  3. 勾选'Use path mappings (select if the server is remote or symlinks are used)'
  4. 添加映射,以便映射 /app、/src 和 /web。这些可以是单独的映射,但如果可能的话,最好在 / 上设置一个更高级别的映射来覆盖它们。

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

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

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

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

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

//$kernel->loadClassCache();

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