首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法加载env vars的PHP DOTENV

无法加载env vars的PHP DOTENV
EN

Stack Overflow用户
提问于 2015-06-17 03:01:07
回答 3查看 18.1K关注 0票数 5

对于我的php应用程序,我使用php dotenv作为env。

readme说我可以用以下方法将php dotenv加载到我的应用程序中:

代码语言:javascript
复制
$dotenv = new Dotenv\Dotenv(__DIR__);
$dotenv->load();

当我尝试登录时,我会得到一个500错误。我尝试过var_dump $dotenv var来查看它包含了什么,但是什么也没有得到。我把这个包括错了吗?

/php/DbConnect.php:

代码语言:javascript
复制
<?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文件:

代码语言:javascript
复制
{
    "require": {
        "vlucas/phpdotenv": "^2.0"
    }
}

我的phpdotenv供应商文件是:

  • 根/供应商/vlucas/phpdotenv/src/Dotenv.php
  • 根/供应商/vlucas/phpdotenv/src/Loader.php
  • root/vendor/vlucas/phpdotenv/src/Validator.php

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

代码语言:javascript
复制
<?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');
    ...

我包括的对吗?

EN

回答 3

Stack Overflow用户

发布于 2021-01-21 22:34:12

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

所以现在正确的方法是:

代码语言:javascript
复制
require 'vendor/autoload.php';

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

$DB_HOST = $_ENV['DB_HOST'];
票数 8
EN

Stack Overflow用户

发布于 2016-01-08 09:30:59

我知道这已经有6个月的历史了,但是您不需要包含/要求,因为"phpdotenv“正在加载Dotenv命名空间。请在composer目录中的供应商目录中签入自动加载的内容。

所以你所需要的是:

代码语言:javascript
复制
require 'vendor/autoload.php';

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

$DB_HOST = getenv('DB_HOST');

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

票数 1
EN

Stack Overflow用户

发布于 2022-04-16 05:48:37

使用getenvputenv并不是线程安全的。您应该使用$_ENV['DB_HOT']$_SERVER['DB_HOST']。但是,如果仍然需要使用这些函数,则可以使用createUnsafeImmutable静态方法。所以代码将是

代码语言:javascript
复制
$dotenv = Dotenv\Dotenv::createUnsafeImmutable(__DIR__);
$dotenv->load();

$DB_HOST = getenv('DB_HOST');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30881596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档