如何使用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
相关产品推荐
相关产品推荐

