php - 如何使用 ddev 和 PhpStorm 逐步调试 drush 命令?

标签 php drupal xdebug drush ddev

我需要在 ddev 项目中调试 drush 命令,但我不知道该怎么做。在 ddev v0.18.0 中,PhpStorm 调试器一开始就坏了,但找不到相关代码。

最佳答案

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。

This PHPStorm blog post解释该技术。

  1. 在 PHPStorm 中创建一个服务器(项目设置->服务器)。我的“服务器”名称是 d8composer。你叫它什么并不重要,你只是需要在以后使用它。
  2. 在 PHPStorm 服务器配置中,将您的宿主项目目录映射到/var/www/html:

server path mappings

  1. 单击“监听调试连接”按钮。

  2. 在您知道应该被 drush 命令击中的地方单击一个断点。

  3. 在容器内 ( ddev ssh ), export PHP_IDE_CONFIG="serverName=d8composer" - 当然,您的名称将不同于 d8composer。

  4. 容器内部 /var/www/html/vendor/drush/drush/drush uli (或任何你想要的命令)。 PHPStorm 将在您的断点处中断。 (当然,您可以通过多种方式执行该命令,但关键是您需要执行存储库中提供的 drush 版本。

在早期版本的 drupal 上,您实际上可以临时将 drush 的副本放入您的存储库中,以同样的方式解决映射问题。

请注意,Matt Glaman 还在 Xdebug Over the Command Line with DDEV 上写了一篇博文

关于php - 如何使用 ddev 和 PhpStorm 逐步调试 drush 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50283253/

相关文章:

php - 如何从特定字符后开始删除字符串

drupal - 禁用指向父菜单和面包屑的链接?

Drupal MultiSite、多个站点或有机组

php - Xdebug - 更改 var_dump 嵌套级别

php - OS X 上的 xdebug 部分工作(例如,在终端而不是浏览器中打印堆栈跟踪)。

javascript - 即使 ajax 验证返回 false,onsubmit 仍然提交表单

php - 使用 PHP 清理 url

php - 从 MySQL 中提取海量数据

php - Drupal7 - 如何在页面中从mysql中选择记录?

php - 等待连接 (netbeans-xdebug) MAMP OS X