Composer php 将xdebug与drush命令一起使用

Composer php 将xdebug与drush命令一起使用,composer-php,xdebug,drush,ddev,Composer Php,Xdebug,Drush,Ddev,我有两个Drupal代码库。首先,我可以通过浏览器和drush命令命中特定的断点。第二,我只能通过浏览器点击断点。drush命令在未命中断点的情况下成功完成。我找不到这两个装置之间有任何有意义的区别 Windows 10 home上的本地开发 Docker工具箱 DDEV v1.14.2 作曲家版本1.10.5 IDE是VSCode,两者之间的launch.json文件相同 未安装Drush启动器 好的: c:…\d8-04-28>ddev执行drush状态 Drupal版本:8.8.5 站点U

我有两个Drupal代码库。首先,我可以通过浏览器和drush命令命中特定的断点。第二,我只能通过浏览器点击断点。drush命令在未命中断点的情况下成功完成。我找不到这两个装置之间有任何有意义的区别

Windows 10 home上的本地开发
Docker工具箱
DDEV v1.14.2
作曲家版本1.10.5
IDE是VSCode,两者之间的launch.json文件相同
未安装Drush启动器

好的:
c:…\d8-04-28>ddev执行drush状态
Drupal版本:8.8.5
站点URI:
数据库驱动程序:mysql
数据库主机名:DB
数据库端口:3306
DB用户名:DB
数据库名称:数据库
数据库:已连接
Drupal引导:成功
默认主题:bartik
管理主题:七个
PHP二进制文件:/usr/bin/php7.3
PHP config:/etc/PHP/7.3/cli/PHP.ini
PHP操作系统:Linux
Drush脚本:/var/www/html/vendor/Drush/Drush/Drush
Drush版本:10.2.2
桶温度:/tmp
Drush配置:/var/www/html/vendor/Drush/Drush/Drush.yml
/var/www/html/drush/drush.yml
安装配置文件:标准
Drupal root:/var/www/html/web
站点路径:站点/默认值
文件,公共:站点/默认/文件
文件,临时:/tmp

坏的
c:…\d8-06-08>ddev执行drush状态
Drupal版本:8.8.5
站点URI:
数据库驱动程序:mysql
数据库主机名:DB
数据库端口:3306
DB用户名:DB
数据库名称:数据库
数据库:已连接
Drupal引导:成功
默认主题:bartik
管理主题:七个
PHP二进制文件:/usr/bin/php7.3
PHP config:/etc/PHP/7.3/cli/PHP.ini
PHP操作系统:Linux
Drush脚本:/usr/local/bin/Drush
Drush版本:10.2.2
桶温度:/tmp
Drush配置:/var/www/html/vendor/Drush/Drush/Drush.yml
/var/www/html/drush/drush.yml
安装配置文件:标准
Drupal root:/var/www/html/web
站点路径:站点/默认值
文件,公共:站点/默认/文件
文件,临时:/tmp

仅在坏的情况下,在ddev中打开xdebug后,drush状态中的PHP配置行更改为:
PHP配置:/tmp/bApEy0

我很确定我的调试问题与处于drush状态的drush脚本行有关,但我找不到任何影响该行的更改


有什么想法可以告诉我正确的方向吗?

我注意到第一个显示“Drush脚本:/var/www/html/vendor/Drush/Drush/Drush”,第二个显示“Drush脚本:/usr/local/bin/Drush”。但是在容器中,/usr/local/bin/drush是“drush启动器”。所以这一切发生的方式肯定是不同的

  • 在调试drush(或任何命令行脚本)时,以最简单的方式执行它,即在容器中执行,因此
    ddev ssh
    ,然后运行drush
  • 但是要具体说明您正在运行什么,不要在容器中使用drush启动器,通过运行/var/www/html/vendor/bin/drush来运行站点安装的drush,这样就不会有额外的脚本层运行额外的drush层
  • 主机系统上的drush或drush launcher与此无关,因为所有事情都发生在容器中
  • 在调试之前,请记住打开
    ddev xdebug
  • 请查看位于的文档中的“PHPStorm和命令行调试”,以及Matt Glaman关于

根据您的建议,我现在可以使用它了。但这让我想到了另一个问题。为什么“好的”能起作用?从远处看,好像你在项目中正确地将composer安装在了“好的”上,而不是“坏的”上。