加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

php – 部署到Elastic Beanstalk时无法识别环境变量

发布时间:2020-05-26 01:54:39 所属栏目:PHP 来源:互联网
导读:我正在尝试在开发模式下将我的Laravel应用程序部署到Elastic Beanstalk.为了使应用程序在开发模式而不是生产中运行,我在/bootstrap/start.php文件中完成了以下操作: $env = $app-detectEnvironment(function() { return $_ENV[ENV_NAME];}); 为了实际创建环

我正在尝试在开发模式下将我的Laravel应用程序部署到Elastic Beanstalk.为了使应用程序在开发模式而不是生产中运行,我在/bootstrap/start.php文件中完成了以下操作:

$env = $app->detectEnvironment(function() {
    return $_ENV['ENV_NAME'];
});

为了实际创建环境变量,我在以下路径中创建了一个.config文件:/.ebextensions/00environmentVariables.config包含以下内容:

option_settings:
   - namespace: aws:elasticbeanstalk:application:environment
     option_name: ENV_NAME
     value: development
   - option_name: DB_HOST
     value: [redacted]
   - option_name: DB_PORT
     value: [redacted]
   - option_name: DB_NAME
     value: [redacted]
   - option_name: DB_USER
     value: [redacted]
   - option_name: DB_PASS
     value: [redacted]

当我从命令行运行eb start时,它会旋转一个EC2实例并尝试配置它,此时它会告诉我它失败了.并检查日志.在日志中,我可以看到这些条目:

PHP Notice: Undefined index: ENV_NAME in
/var/app/ondeck/bootstrap/start.php on line 28

Notice: Undefined index: ENV_NAME in /var/app/ondeck/bootstrap/start.php on line 28

因此,由于某种原因,ENV_NAME环境变量不存在,即使我已在00environmentVariables.config中指定它.甚至更奇怪的是,我可以看到环境变量确实存在于EB环境的软件配置设置下:

总结一下:

>我知道我的.config文件是通过查看日志来解析的
>出于某种原因,我的Laravel应用程序仍然不认为ENV_NAME是eixsts
> ENV_NAME将在此环境的.config文件和Elastic Beanstalk设置中使用

编辑

好吧,所以我发现在通过Apache HTTP服务器提供应用程序时环境变量可以正常工作,但运行PHP CLI时环境变量不存在.

在上面的日志中,它抱怨运行/usr/bin/composer.phar安装时ENV_NAME不存在.

因此,出于某种原因,我的环境变量在PHP CLI中不存在,但在通过Apache提供时它们可以正常工作.

进一步编辑

所以我通过SSH连接到在Elastic Beanstalk上托管我的Laravel应用程序的EC2实例,当我使用“printenv命令’时,我可以看到正确的环境变量:

ENV_NAME=development

但是,如果我做了死(var_dump($_ SERVER));并运行PHP CLI,我没有看到我定义的环境变量.与$_ENV和getenv()相同的故事.

为什么我不能在PHP CLI中访问我的环境变量,当我在Apache处理我的PHP脚本时可以访问它们?

再来一次编辑

我用一行创建了一个test.php文件:die(var_dump($_ ENV));.

当我使用php test.php运行时,我成功地获得了自定义环境变量,因此这似乎只是一个作曲家问题,而不是PHP CLI问题.

我使用YAML脚本从为ec2-user设置的现有变量设置root用户的环境变量.将其添加到扩展名为.config的.ebextensions文件夹中.

从那里你可以运行PHP cli,它将看到正确的环境变量

commands:
  create_post_dir:
    command: "mkdir /opt/elasticbeanstalk/hooks/appdeploy/post"
    ignoreErrors: true
files:
  "/opt/elasticbeanstalk/hooks/appdeploy/post/job_after_deploy.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      source /opt/elasticbeanstalk/support/envvars
      # Run PHP scripts here. #

从徐鼎的答案到this question和this answer

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读