9

问题:

  • 我希望能够调试我的 symfony2 项目。我希望能够在我的代码中设置一个断点,运行远程调试,并且能够在我与我的应用程序交互时单步执行我的代码中的所有断点。

背景信息和当前设置:

  • 我使用的 IDE 是 phpstorm。

  • Apache 和 mySql 服务器在我的 vmware 播放器上运行。

  • Xdebug 安装在 vmware 播放器上。

  • 我目前通过我的 vmware 播放器 ip(即 172.16.48.1/app_dev.php)连接到我的项目。此时我与我的应用程序正常交互并进行开发。

到目前为止我做了什么

  • 我按照教程进行操作,但没有任何运气。

  • 我真的对大部分教程感到困惑,但我尽可能地遵循它。按照说明操作时,我认为小书签无法正常工作。

  • 我还观看了一两次关于远程调试的网络研讨会,但我仍然不完全清楚我需要做什么才能逐步完成我的代码。

问题:

  • 有人可以提供有关设置远程调试所需的分步教程,以便我可以通过 phpstorm 启动一些远程调试会话,这将打开我的 Web 应用程序,并且当我浏览我的 Web 应用程序时,我的断点会被命中吗?
4

2 回答 2

29

我刚刚使用 Chrome 完成了本地 symfony2 应用程序和 phpstorm 调试的设置,这是我所做的:

1)在服务器上的 php.ini 中配置 xdebug 并重新启动 Web 服务器(或 php-fpm):

[xdebug]
zend_extension="**location to xdebug**/xdebug.so"
xdebug.remote_enable = 1
; use port 9009 because php-fpm uses 9000 by default
xdebug.remote_port = 9009
xdebug.idekey = PHPSTORM

2)安装xdebug扩展 https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc

3)设置xdebug exteions。在 chrome://extensions 中找到 Xdebug 助手并单击选项。在那里选择 IDE 键到 PhpStorm。(这实际上会将 xdebug.idekey 设置为该特定会话的 PHPSTORM)

4) 现在是最棘手的部分,从 PhpStorm 连接。您必须设置PHP Remote Debug调试配置。

  1. 在工具栏中,在调试按钮旁边,您有带有第一个选项的下拉字段Edit configuration。它打开Run/Debug Configurations
  2. 在那里单击+按钮并添加PHP Remote Debug.
  3. 指定您的姓名、服务器和Ide key= PHPSTORM
  4. 单击应用和确定(我不知道是哪一个,所以我总是单击两者,以防万一)
  5. 现在工具栏中的下拉菜单将显示您新设置的远程服务器,运行按钮(绿色箭头)将被禁用。
  6. 点击Start Listen for PHP Debug Connection
  7. 单击那个绿色的错误图标开始调试
  8. 调试视图将打开 2 个选项卡:调试器和控制台(默认选中)
  9. 将选项卡更改为调试器,您将看到:“等待与 ide 键 'PHPSTORM' 的传入连接”
  10. 打开你的浏览器
  11. 导航到您的服务器网址
  12. 激活 Xdebug 助手扩展(点击 url 栏中的那个灰色错误)它会变成绿色
  13. 要检查一切是否正常,请打开 Chrome 控制台,选项卡资源 -> Cookies -> 您的服务器。并验证是否创建了值为 PHPSTORM 的 cookie XDEBUG_SESSION(这实际上是在 php 中激活 xdebug 远程调试)
  14. 现在刷新页面并快速 alt-tab 回到 PhpStorm(或安排你的窗口,以便在刷新浏览器时可以看到 PhpStorm)
  15. 在您的调试视图和调试器控制台中,您将简要看到“已连接”

多田!

在控制器中创建几个断点(不要使用 AppKernel.php 或其他 symfony2 特定文件,因为它们会被编译并且不会被调用,即使在开发模式下也是如此)


2015 年 1 月 5 日添加

官方教程可以在这里找到: https ://confluence.jetbrains.com/display/PhpStorm/Profiling+PHP+applications+with+PhpStorm+and+Xdebug

于 2014-03-12T10:00:38.467 回答
0

一切正常,直到我设置断点为止。由于 Symfony2 是前端控制器,它不知道哪个对应的文件与断点匹配。我尝试设置路径映射,但无济于事。

无效的路径映射

于 2015-04-06T18:07:22.053 回答