【发布时间】:2015-09-03 10:37:29
【问题描述】:
我使用 Elastic Beanstalk 在 AWS EC2 服务器上托管我的 PHP 项目。我已经使用php dotenv 设置了我的 ENV Vars,这似乎可以从我的根 .env 文件中获取我的 vars:
DbConnect.php:
require '../vendor/autoload.php';
$dotenv = new Dotenv($_SERVER['DOCUMENT_ROOT']);
$dotenv->load();
$DB_HOST = getenv('DB_HOST');
$DB_USERNAME = getenv('DB_USERNAME');
$DB_PASSWORD = getenv('DB_PASSWORD');
$DB_DATABASE = getenv('DB_DATABASE');
$mysqli = new mysqli($DB_HOST, $DB_USERNAME, $DB_PASSWORD, $DB_DATABASE);
因此,在 AWS 管理控制台中,我在软件配置、git push 和 re eb-deployed 中设置了相同命名的 ENV 变量。我收到 500 错误,因为 EC2 ENV 变量似乎没有启动。
我还有什么需要做的吗?
更新:
eb printenv 显示了正确的环境变量值。
【问题讨论】:
-
不知道谁在没有任何 cmets 的情况下投反对票。这个问题对我来说看起来不错。如果你投了反对票,你最好给出一些理由
-
您始终可以使用
eb printenv来确保环境变量符合您的预期。 -
您是否尝试过对所有 envvars 使用
$_SERVER['DB_HOST']语法而不是 getenv? -
@NickHumrich yes Nick,
eb printenv打印了正确的值 -
我也建议尝试
$_ENV['DB_HOST']。但是,它们都应该以相同的方式工作。您还可以通过查看phpinfo结果来验证 envvars 是否正确进入 php 容器。
标签: php amazon-web-services amazon-ec2 amazon-elastic-beanstalk