如何使用PhpStorm和Xdebug为Symfony2设置远程调试

9

问题:

  • 我想要调试我的Symfony2项目。我希望可以在我的代码中设置断点,运行远程调试,并且在与应用程序交互时能够逐步跟踪所有断点。

背景信息和当前设置:

  • 我正在使用的IDE是PhpStorm。

  • Apache和MySQL服务器正在我的vmware player上运行。

  • Xdebug已安装在vmware player上。

  • 我目前通过我的vmware player IP连接到我的项目(即172.16.48.1/app_dev.php)。此时我正常地与我的应用程序交互并开发。

我迄今为止所做的事情

  • 我遵循了教程,但没有成功。

  • 我对大多数教程感到困惑,但尽最大努力按照它们进行操作。当按照说明操作时,我认为书签未正确工作。

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

问题:

  • 有人能够提供一个逐步教程吗,告诉我如何设置远程调试,以便我可以通过PhpStorm启动一些远程调试会话,打开我的Web应用程序,并在浏览我的Web应用程序时达到我的断点?

比仅有文本更好:http://blog.jetbrains.com/phpstorm/2013/07/webinar-recording-debugging-php-with-phpstorm/ - LazyOne
我会观看这个,看看它是否能帮助我。如果有什么作用,它将帮助我构建一个更加智能的问题,以便他人可以帮助我理解我做错了什么。 - Ryan W
这篇文章也应该在视频中涵盖:http://confluence.jetbrains.com/display/PhpStorm/Zero-configuration+Web+Application+Debugging+with+Xdebug+and+PhpStorm - LazyOne
我尝试按照您提供的链接进行操作,但仍然无法使其正常工作。教程中的书签似乎在我按照使用说明进行操作时没有任何反应。 - Ryan W
嗯...我该说什么呢。我不知道你到底做了什么;如果调试实际上已经安装和配置正确(我不知道你的经验;我见过很多人声称“所有设置都正确”,但事实上相反);同样适用于IDE。原因很简单——你没有提供任何相关信息。我建议你在PhpStorm论坛上创建新主题,这更适合此类情况/讨论:http://devnet.jetbrains.com/community/wi?view=discussions - LazyOne
抱歉晚发帖。我真是丢脸。LazyOne,你是对的。我回去仔细审查了设置说明,结果发现问题出在我的php.ini中缺少一些设置,以便调试器与phpstorm通信。你发布的说明正是解决问题所需的。感谢你的帮助。 - Ryan W
2个回答

29

我刚刚完成了在本地设置Symfony2应用和使用Chrome进行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扩展。在chrome://extensions中找到Xdebug Helper并点击选项。在那里选择PhpStorm的IDE键。(这将为该特定会话设置xdebug.idekey为PHPSTORM)

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

  1. 在工具栏旁边的调试按钮旁边,您有一个下拉字段,其中第一个选项是“编辑配置”。它打开“运行/调试配置”。
  2. 在那里单击“+”按钮并添加“PHP Remote Debug”。
  3. 指定您的名称、服务器和“Ide key”=“PHPSTORM”。
  4. 单击应用和确定(我从来不知道哪个,所以我总是都点一下,以防万一)
  5. 现在工具栏中的下拉列表将显示您新设置的远程服务器,运行按钮(绿色箭头)将被禁用。
  6. 单击“启动侦听PHP调试连接”
  7. 单击绿色的bug图标以开始调试
  8. 调试视图将打开2个标签:调试器和控制台(默认选中)
  9. 将选项卡更改为Debugger,您将看到:“正在等待使用ide key 'PHPSTORM'的传入连接”
  10. 打开浏览器
  11. 导航到您的服务器URL
  12. 启用Xdebug Helper扩展(单击网址栏中的灰色bug),它将变绿
  13. 要检查一切是否正常,请打开Chrome控制台,选项卡资源-> Cookies->您的服务器。并验证带有值PHPSTORM的XDEBUG_SESSION cookie已创建(这实际上激活了php中的xdebug远程调试)
  14. 现在刷新页面并快速alt-tab返回PhpStorm(或排列窗口以便您可以在刷新浏览器时看到PhpStorm)
  15. 在Debug view和Debugger console中,您会短暂地看到“已连接”

TADA!

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


添加于2015年5月1日

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


0

一切都运作正常,直到我设置断点的那一刻。由于Symfony2是一个前置控制器,它不知道哪个相应的文件与断点匹配。 我尝试设置路径映射,但没有成功。

Invalid path mappings


尝试安装 Symfony2 Plugin,它会为您完成所有的映射工作。https://plugins.jetbrains.com/plugin/7219 - gondo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接