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

升级Drupal 10.3.9至10.4.0时AWS Elastic Beanstalk部署Composer报错

解决Drupal 10.4.0升级至AWS Elastic Beanstalk时s3fs模块Git克隆失败问题

问题核心

Drupal 10.4.0升级后,Composer尝试在/root/cache/vcs/目录下克隆s3fs模块的Git仓库,但AWS Elastic Beanstalk部署环境下该路径无写入权限,导致克隆失败。10.3.9版本未触发此问题,大概率是升级后Composer缓存路径配置变化,或s3fs模块版本约束自动切换到了需要Git克隆的开发分支。

可行解决办法

1. 强制指定Composer缓存到有权限的目录

AWS EB的应用目录(如/app或/var/app/staging)是部署用户有写入权限的路径,可通过以下方式修改Composer缓存路径:

  • 方式一:修改composer.json配置
    在composer.json的config节点中添加缓存目录配置:

    "config": {
        "cache-dir": "/app/composer-cache",
        "cache-repo-dir": "/app/composer-cache/repo"
    }
    

    提交修改后重新部署,Composer会自动创建该目录并使用它缓存依赖。

  • 方式二:通过EB扩展设置环境变量
    创建.ebextensions/composer-cache.config文件,内容如下:

    container_commands:
      01_create_cache_dir:
        command: "mkdir -p /app/composer-cache && chown webapp:webapp /app/composer-cache"
      02_set_composer_cache_var:
        command: "echo 'export COMPOSER_CACHE_DIR=/app/composer-cache' >> /etc/profile.d/composer.sh"
    

    这会在部署前创建缓存目录并设置环境变量,让Composer使用该路径。

2. 强制使用s3fs稳定版本而非开发分支

错误信息显示拉取的是s3fs dev-3.x分支,该分支需要Git克隆;稳定版本可直接下载压缩包,无需Git操作。修改composer.json的require节点,指定s3fs稳定版本:

"require": {
    "drupal/s3fs": "^3.0"
}

执行composer update drupal/s3fs更新本地依赖后,重新打包部署即可。

3. 以webapp用户身份运行Composer

AWS EB默认可能以root用户运行Composer,但部分环境下root对/root目录的写入也受限制。通过EB扩展切换到webapp用户执行Composer命令:
创建.ebextensions/composer-run-as-webapp.config:

container_commands:
  01_run_composer:
    command: "su - webapp -c 'cd /var/app/staging && composer install --no-dev --optimize-autoloader'"
    leader_only: true

4. 禁用Composer缓存

如果不需要缓存,可直接在部署命令中禁用缓存,避免创建缓存目录的操作:
在EB扩展或部署脚本中使用以下Composer命令:

composer install --no-dev --optimize-autoloader --no-cache

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 13:32:37