PHP DOTENV无法加载env vars

时间:2015-06-17 03:01:07

标签: php environment-variables

我正在为我的php应用程序使用php dotenv env vars。

自述文件说我可以将php dotenv加载到我的应用程序中:

$dotenv = new Dotenv\Dotenv(__DIR__);
$dotenv->load();

当我尝试登录时,出现500错误。我尝试var_dump我的$dotenv var来查看它包含的内容,但我什么都没得到。我不正确地包括这个吗?

/php/DbConnect.php:

<?php
$dotenv = new Dotenv\Dotenv(__DIR__);
$dotenv->load();

$DB_HOST = getenv('DB_HOST');
$DB_USERNAME = getenv('DB_USERNAME');
$DB_PASSWORD = getenv('DB_PASSWORD');
$DB_DATABASE = getenv('DB_DATABASE');

我的root / composer.json文件:

{
    "require": {
        "vlucas/phpdotenv": "^2.0"
    }
}

我的phpdotenv供应商文件是:

  • root / vendor / vlucas / phpdotenv / src / Dotenv.php
  • root / vendor / vlucas / phpdotenv / src / Loader.php
  • root / vendor / vlucas / phpdotenv / src / Validator.php

在我的root / php / DbConnect.php文件中:

<?php
require 'vendor/autoload.php';

require 'vendor/vlucas/phpdotenv/src/Dotenv.php';
require 'vendor/vlucas/phpdotenv/src/Loader.php';
require 'vendor/vlucas/phpdotenv/src/Validator.php';
$dotenv = new Dotenv\Dotenv(__DIR__);
$dotenv->load();

$DB_HOST = getenv('DB_HOST');
    ...

我是否正确包括?

2 个答案:

答案 0 :(得分:4)

请注意,docs for DotENV 不建议使用 getenv()putenv()。相反,您应该使用 $_ENV['EXAMPLEVAR']

所以这是现在正确的方法:

require 'vendor/autoload.php';

$dotenv = new Dotenv\Dotenv(__DIR__);
$dotenv->load();

$DB_HOST = $_ENV['DB_HOST'];

答案 1 :(得分:1)

我知道这已经有6个月了,但你不需要include / require,因为“phpdotenv”正在加载Dotenv命名空间。在composer目录中检查供应商目录自动加载的内容。

所以你需要的只是:

require 'vendor/autoload.php';

$dotenv = new Dotenv\Dotenv(__DIR__);
$dotenv->load();

$DB_HOST = getenv('DB_HOST');

还要确保loa​​d()方法可以找到.env文件,如果命名不同,则将文件名传递给load()方法。 点击此处的文档:“使用情况”部分下的https://github.com/vlucas/phpdotenv