我正在为我的php应用程序使用php dotenv for env vars。
自述文件说我可以通过以下方式将php dotenv
加载到应用程序中:
$dotenv = new Dotenv\Dotenv(__DIR__);
$dotenv->load();
字符串
当我尝试登录时,我得到一个500错误。我尝试var_dump
ing我的$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');
...
型
我算对了吗?
3条答案
按热度按时间r1wp621o1#
请注意,docs for DotENV不建议使用
getenv()
或putenv()
。您应该使用$_ENV['EXAMPLEVAR']
现在这是正确的方法:
字符串
在新版本中:
型
nzrxty8p2#
使用
getenv
和putenv
不是线程安全的。您应该使用$_ENV['DB_HOT']
或$_SERVER['DB_HOST']
。但是,如果你仍然需要使用这些函数,你可以使用createUnsafeImmutable
静态方法。所以代码是字符串
mmvthczy3#
我知道这是6个月前的,但你不需要include/require,因为“phpdotenv”正在加载Dotenv命名空间。在composer目录中的供应商目录中检查自动加载的内容。
所以你需要的是:
字符串
还要确保load()方法可以找到您的.env文件,如果名称不同,则将文件的名称传递给load()方法。在此查看文档:https://github.com/vlucas/phpdotenv在用法部分。