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

在DDEV中为Symfony系CLI工具(如Magento)配置自动补全遇阻求助

解决DDEV容器中Magento CLI自动补全报错_get_comp_words_by_ref: command not found的问题

问题分析

报错_get_comp_words_by_ref: command not found是因为缺少bash-completion基础包,该函数是bash补全机制的核心依赖,DDEV Web容器默认未预装此包,导致bamarni/symfony-console-autocomplete生成的补全脚本无法正常运行。

解决步骤

1. 在Web容器中安装bash-completion

修改.ddev/web-build/Dockerfile,添加安装bash-completion的命令:

ENV COMPOSER_HOME="/usr/local/composer"
ENV SHELL="bash"
# 安装bash-completion基础包
RUN apt-get update && apt-get install -y bash-completion && rm -rf /var/lib/apt/lists/*
RUN composer global require consolidation/cgr
RUN $COMPOSER_HOME/vendor/bin/cgr bamarni/symfony-console-autocomplete
# 移除清空COMPOSER_HOME的语句,确保全局Composer工具路径有效
# ENV COMPOSER_HOME=""

2. 确保bash-completion在shell启动时加载

修改.ddev/homeadditions/.bashrc.d/autocomplete,先加载bash-completion核心库,再初始化symfony-autocomplete:

export PATH="$PATH:/usr/local/composer/vendor/bin"
# 加载bash-completion基础补全函数
source /usr/share/bash-completion/bash_completion
eval "$(symfony-autocomplete)"

3. 重建容器并测试

执行以下命令重启DDEV容器:

ddev restart

进入容器后,输入magento并按键,即可正常触发自动补全。

补充说明

  • bash-completion是绝大多数Shell自动补全脚本的依赖基础,必须预装才能让补全逻辑正常工作。
  • 原配置中ENV COMPOSER_HOME=""会清空全局Composer的环境变量,导致后续无法找到已安装的symfony-autocomplete工具,因此需要移除该语句。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 07:31:01