You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用ddev与PhpStorm对drush命令进行单步调试?

解决DDEV v0.18.0中调试Drush命令时PhpStorm找不到关联代码的问题

我来帮你搞定这个Drush调试的棘手问题——在DDEV v0.18.0里,PhpStorm能触发初始中断但找不到对应代码,核心原因几乎都是容器与本地的路径映射没配置对,下面是一步步的解决方法:

1. 确认DDEV的Xdebug已正确启用

首先确保你的DDEV环境已经开启了Xdebug:

  • 运行命令:ddev xdebug on
  • 可以通过ddev exec php -v查看输出,确认Xdebug模块已加载。

2. 配置PhpStorm的路径映射(关键步骤)

这是解决代码找不到问题的核心,因为DDEV容器内的代码路径和本地机器的路径完全不同,PhpStorm需要知道两者的对应关系:

  • 打开PhpStorm的设置(File > Settings 或快捷键 Ctrl+Alt+S),导航到 Languages & Frameworks > PHP > Servers
  • 添加一个新服务器:
    • 名称:随便填,比如ddev-project
    • 主机:填写你的DDEV项目域名(比如myproject.ddev.site)
    • 端口:80
    • 调试器:选择Xdebug
  • 切换到Path mappings标签页:
    • 找到本地项目的根目录(比如/Users/yourname/projects/myproject),在对应的“Absolute path on the server”输入框中填写DDEV容器内的代码路径:/var/www/html
    • 如果你要调试的是Drush核心代码(比如vendor/drush/drush下的文件),确保本地的vendor目录也映射到容器内的/var/www/html/vendor

3. 触发Drush命令的Xdebug调试

运行Drush命令时,需要明确告诉Xdebug连接到PhpStorm:

  • 方式一:在命令前添加环境变量,直接在终端运行:
    ddev exec XDEBUG_SESSION=PHPSTORM drush your-command-here
    
  • 方式二:先点击PhpStorm右上角的“Start Listening for PHP Debug Connections”按钮(电话图标),然后确保Drush命令运行时携带Xdebug触发参数。

4. 验证断点与缓存

  • 确保断点打在可执行的代码行上(不要打在注释、空行或者函数定义的括号上)
  • 如果还是有问题,尝试重启PhpStorm,或者执行File > Invalidate Caches...清理缓存后重启。

5. DDEV v0.18.0的特殊配置检查

这个版本的DDEV需要确认Xdebug的远程连接配置:

  • 运行命令查看Xdebug配置:ddev exec cat /etc/php/7.3/mods-available/xdebug.ini(根据你的PHP版本调整路径,比如7.4的话是/etc/php/7.4/)
  • 确保以下配置正确:
    xdebug.remote_connect_back=0
    xdebug.remote_host=host.docker.internal
    

按照这些步骤配置后,你应该就能正常在PhpStorm中调试Drush命令,断点会准确命中对应的代码了。

内容的提问来源于stack exchange,提问作者rfay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:07:52