大佬教程收集整理的这篇文章主要介绍了php – 部署到Elastic Beanstalk时无法识别环境变量,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
$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实例并尝试配置它,此时它会告诉我它失败了.并检查日志.在日志中,我可以看到这些条目:
因此,由于某种原因,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问题.
从那里你可以运行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
以上是大佬教程为你收集整理的php – 部署到Elastic Beanstalk时无法识别环境变量全部内容,希望文章能够帮你解决php – 部署到Elastic Beanstalk时无法识别环境变量所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。