在DDEV中降级Composer 2.x至1.x失败的问题求助
解决DDEV v1.21.3无法切换到Composer 1.x的问题
问题分析
DDEV 1.18+版本调整了Composer的部署逻辑,默认容器内置Composer 2.x,若项目配置未被正确加载、存在容器缓存,或全局配置覆盖了项目设置,会导致无法切换到Composer 1.x。
解决方案
1. 确认项目配置有效性
打开项目根目录下的.ddev/config.yml,确保存在以下配置且未被注释:
composer_version: "1"
保存后执行:
ddev restart
2. 清理DDEV缓存与旧容器
彻底清理项目相关的容器和镜像,避免缓存残留:
# 停止所有DDEV服务 ddev poweroff # 删除项目相关容器 docker rm -f $(docker ps -aq -f name=ddev-<你的项目名>) # 删除项目专属web镜像 docker rmi -f $(docker images -q -f reference=ddev-webserver-<你的项目名>:*) # 重新启动项目 ddev start
3. 容器内手动安装Composer 1.x
若上述方法无效,直接进入容器手动指定版本安装:
# 进入项目容器 ddev exec # 下载Composer 1.x安装脚本并验证 php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" # 安装指定版本的Composer 1.x(这里用1.10.26,可替换为其他1.x版本) php composer-setup.php --version=1.10.26 # 清理安装脚本并移动到全局路径 php -r "unlink('composer-setup.php');" mv composer.phar /usr/local/bin/composer # 退出容器 exit # 验证版本 ddev exec composer --version
4. 检查全局配置是否覆盖
查看DDEV全局配置文件~/.ddev/global_config.yaml,若存在composer_version配置项,确保其未强制设置为2.x,否则会覆盖项目级配置。
内容的提问来源于stack exchange,提问作者macbert
相关产品推荐
相关产品推荐

