【问题标题】:AWS ElasticBeanstalk ENV Vars not workingAWS ElasticBeanstalk ENV Vars 不工作
【发布时间】: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


【解决方案1】:

引用https://github.com/vlucas/phpdotenv

phpdotenv 是为开发环境而设计的,通常应该 不能用于生产。在生产中,实际环境 应该设置变量,以便没有加载 每个请求的 .env 文件。这可以通过自动化来实现 使用 Vagrant、chef 或 Puppet 等工具的部署过程,或者可以是 使用 Pagodabox 和 Heroku 等云主机手动设置。

如果没有 .env 文件,会出现 php 致命错误

致命错误:未捕获的异常 带有消息“无法读取”的“Dotenv\Exception\InvalidPathException” /home/vagrant/Code/project/.env 的环境文件。在 /home/vagrant/Code/project/vendor/vlucas/phpdotenv/src/Loader.php 第 75 行

如果你愿意 以下是您可以设置Environment Variable 来检查的示例代码,它仅在本地/测试环境中加载 Dotenv

if(getenv('APP_ENV') === 'local' || getenv('APP_ENV') === 'testing')
{
    $dotenv = new Dotenv\Dotenv(__DIR__);
    $dotenv->load();
}

或者另一种方法是检查 .env 文件是否存在

$filePath = rtrim(__DIR__, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR . '.env';
if(is_file($filePath) && is_readable($filePath))
{
    $dotenv = new Dotenv\Dotenv(__DIR__);
    $dotenv->load();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-20
    • 2017-02-23
    • 2021-05-05
    • 2017-08-04
    • 2018-07-25
    • 2014-06-11
    • 2014-10-20
    • 2017-01-31
    相关资源
    最近更新 更多