我正在为我的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 / 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');
...
我是否正确包括?
答案 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');
还要确保load()方法可以找到.env文件,如果命名不同,则将文件名传递给load()方法。 点击此处的文档:“使用情况”部分下的https://github.com/vlucas/phpdotenv。