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

Laravel部署于EB时postdeploy脚本调用get-config写入文件为空

故障根因

脚本无写入内容是Shell重定向逻辑写错导致的,具体问题点:

  • 核心错误:echo 命令的所有输出(包含你要写入文件的RDS_HOSTNAME内容)被>> /dev/null 2>&1重定向规则全部送入空设备丢弃,管道符左侧没有任何输出流传递给右侧的sudo tee命令,tee拿不到待写入内容,自然生成空文件。
  • 逻辑偏差:原写法的引号拼接逻辑本身没有问题,但管道重定向的位置完全放错,属于对Shell重定向、管道的数据流向理解有误。
  • 验证结论:手动登录实例执行get-config能拿到正常值,说明工具本身权限、RDS配置下发逻辑完全正常,不需要排查EB环境本身的配置问题。
修复方案

替换my_script.sh内容为以下版本即可:

#!/bin/sh
# 读取EB环境中的RDS主机名配置
host_name=$(/opt/elasticbeanstalk/bin/get-config environment -k RDS_HOSTNAME)
# 将配置写入目标文件,末尾的>/dev/null仅屏蔽tee命令默认的控制台打印输出,不影响文件写入
echo "RDS_HOSTNAME=\"${host_name}\"" | sudo tee /var/app/current/aws.env.tmp.config > /dev/null
部署注意事项
  • 提交代码前务必给脚本添加可执行权限:执行chmod +x .platform/hooks/postdeploy/my_script.sh,否则EB部署时会因无执行权限跳过该钩子。
  • 上述脚本默认每次部署覆盖写入目标配置文件,如果你需要追加多个配置项,可以把tee改为tee -a开启追加模式;如果是写多组配置,建议脚本开头先加sudo rm -f /var/app/current/aws.env.tmp.config清空旧文件,避免重复部署产生重复配置行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 12:21:19