【问题标题】:PHP DOTENV unable to load env varsPHP DOTENV 无法加载环境变量
【发布时间】:2015-09-02 02:22:27
【问题描述】:

我将php dotenv 用于我的php 应用程序的环境变量。

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

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

当我尝试登录时,我收到 500 错误。我尝试var_dumping 我的$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');
    ...

我包含正确吗?

【问题讨论】:

  • 您是否包括包含通过include()require() 等的类的文件?
  • @Rasclatt 我包括对了吗?

标签: php environment-variables


【解决方案1】:

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

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

require 'vendor/autoload.php';

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

$DB_HOST = $_ENV['DB_HOST'];

【讨论】:

  • 最后一行应该使用方括号而不是圆括号。例如,“$DB_HOST = $_ENV['DB_HOST'];”
【解决方案2】:

我知道这已经 6 个月大了,但您不需要包含/要求,因为“phpdotenv”正在加载 Dotenv 命名空间。在作曲家目录中的供应商目录中检查自动加载的内容。

所以你需要的是:

require 'vendor/autoload.php';

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

$DB_HOST = getenv('DB_HOST');

还要确保 load() 方法可以找到您的 .env 文件,如果命名不同,请将文件名传递给 load() 方法。 在此处查看文档:https://github.com/vlucas/phpdotenv 在“用法”部分下。

【讨论】:

    猜你喜欢
    • 2021-11-08
    • 2017-07-09
    • 1970-01-01
    • 2023-02-08
    • 2020-01-22
    • 1970-01-01
    • 2021-07-11
    • 2021-10-14
    • 2020-08-09
    相关资源
    最近更新 更多