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

Laravel通过CodeCommit部署到Elastic Beanstalk时storage:link路径异常如何解决

问题原因

Elastic Beanstalk 执行 container_commands 阶段时,应用代码还存放在临时部署目录 /var/app/staging 中,此时直接运行 php artisan storage:link 生成的软链接会绑定 staging 目录下的 storage 路径。部署完成后代码会被移动到正式运行目录 /var/app/current,因此会出现软链接指向路径不符合预期的问题。

解决方案

你可以选择以下任意一种方案修复该问题:

方案1:修改 .ebextensions 配置,直接指定软链接路径

将原来的 artisan 命令替换为手动创建软链接的 ln 命令,直接指定正确的目标路径,修改后的 init.config 内容如下:

// init.config inside .ebextensions
container_commands:
  01storagelink:
    command: "ln -sf /var/app/current/storage/app/public /var/app/staging/public/storage"

参数说明:

  • -sf 表示强制覆盖已存在的软链接,避免部署时报文件已存在的错误
  • 也可以使用 Elastic Beanstalk 内置的环境变量替代硬编码路径,兼容性更强:
    command: "ln -sf $EB_APP_CURRENT_DIR/storage/app/public $EB_APP_STAGING_DIR/public/storage"
    

对于 Amazon Linux 2 版本的 Elastic Beanstalk 平台,推荐使用官方提供的 postdeploy 钩子,在代码完全部署到正式目录后再执行命令,操作步骤如下:

  • 在项目根目录创建层级目录 .platform/hooks/postdeploy/
  • 在该目录下新建脚本文件 01_create_storage_link.sh,写入以下内容:
    #!/bin/bash
    cd /var/app/current
    php artisan storage:link
    
  • 为脚本添加可执行权限(本地执行该命令后再提交代码):
    chmod +x .platform/hooks/postdeploy/01_create_storage_link.sh
    

该方案完全复用 Laravel 原生的 storage 链接生成逻辑,无需手动维护路径,适配性更强。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:15:02