首页 > 解决方案 > ElasticBeanstalk 的 EC2 实例未在终端/ssh 中检索 Laravel 应用程序的 Beanstalk 控制台中设置的 .env 变量

问题描述

我正在将 Laravel 应用程序部署到 ElasticBeanstalk。现在,我正在尝试通过 SSH 连接到我的 Beanstalk 环境的 EC2 实例并运行命令。

php artisan migrate --force

但我无法运行它。该命令失败,因为它没有获取 Beanstalk 环境中设置的环境变量。这就是我所做的。

我 ssh 进入实例。然后我转到 /var/www/html 文件夹。然后我运行“php artisan migrate --force”命令。正如我所提到的,它失败了,因为它没有获得在 Beanstalk 环境中设置的数据库凭据。我也试过这个。

sudo -u root php artisan migrate --force

同样的事情也发生了。我还在终端玩了修补匠。当我检索像 env('APP_NAME') 这样的应用程序名称时,它返回 null。有什么问题,我该如何解决?

标签: laravelamazon-web-servicesamazon-ec2amazon-elastic-beanstalk

解决方案


该命令失败,因为它没有获取 Beanstalk 环境中设置的环境变量。

Amazon Linux 2 (AL2) 上,EB 环境变量存储在/opt/elasticbeanstalk/deployment/env. 因此,当您 ssh 到您的 EB 实例时,您可以使用以下内容来填充您的环境变量(需要 sudo 到 root firs):

sudo su 
export $(cat /opt/elasticbeanstalk/deployment/env | xargs)
echo $YOU_ENV_NAME_FORM_EB 

这是在 AL2 上执行此操作的未记录方式。

笔记:

env 变量不应该有空格。该文件也不是立即可用的。它在部署成功时创建。


推荐阅读