我需要在 ddev 项目中调试 drush 命令,但我不知道该怎么做。在 ddev v0.18.0 中,PhpStorm 调试器在开始时中断,但找不到相关代码。
2 回答
2020-12-28 更新:此答案已过时,因为 ddev 已在最新版本中为您设置 PHP_IDE_CONFIG 环境。一般来说,如果您已经进行了任何调试(这会创建 .ddev.site “服务器”/映射),那么一切都应该可以正常工作。有些人也更喜欢使用 vendor/bin/drush,因为它跳过了 /usr/local/bin/drush 的使用,它是 Drush 启动器。
-------- 原始答案 --------
PHPStorm 提供了一种非常好的方法来做到这一点,而 ddev 通过自动调试设置使其变得超级容易。
这种技术最适用于带有 drush 的 Drupal 8 站点,就像您使用 drupal-composer 设置一样。它假设 drush 被卖到 vendor/drush/drush。
这篇 PHPStorm 博客文章解释了该技术。
- 在 PHPStorm 中创建一个服务器(项目设置-> 服务器)。我的“服务器”名称是 d8composer。不管你怎么称呼它,你只需要以后使用它。
- 在 PHPStorm 服务器配置中,将宿主项目目录映射到 /var/www/html:
单击“侦听调试连接”按钮。
在您知道应该被 drush 命令击中的位置单击断点。
在容器 (
ddev ssh
) 内,export PHP_IDE_CONFIG="serverName=d8composer"
- 当然,您的容器将被命名为 d8composer 以外的名称。在容器内部
/var/www/html/vendor/drush/drush/drush uli
(或您想要的任何命令)。PHPStorm 将在您的断点处中断。(当然,您可以通过多种方式执行该命令,但关键是您需要执行出售到 repo 中的 drush 版本。
在早期版本的 drupal 上,您实际上可以将 drush 的副本临时放入您的 repo 中,以同样的方式解决映射问题。
请注意,Matt Glaman 还写了一篇关于Xdebug Over the Command Line with DDEV的博客文章
还要检查 PHPStorm 并取消选中“通过未注册的服务器配置忽略外部连接”。