对于我的php应用程序,我使用php dotenv作为env。
readme说我可以用以下方法将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文件:
{
"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');
...我包括的对吗?
发布于 2021-01-21 22:34:12
请注意,DotENV文档不建议使用getenv()或putenv()。相反,您应该使用$_ENV['EXAMPLEVAR']
所以现在正确的方法是:
require 'vendor/autoload.php';
$dotenv = new Dotenv\Dotenv(__DIR__);
$dotenv->load();
$DB_HOST = $_ENV['DB_HOST'];发布于 2016-01-08 09:30:59
我知道这已经有6个月的历史了,但是您不需要包含/要求,因为"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。
发布于 2022-04-16 05:48:37
使用getenv和putenv并不是线程安全的。您应该使用$_ENV['DB_HOT']或$_SERVER['DB_HOST']。但是,如果仍然需要使用这些函数,则可以使用createUnsafeImmutable静态方法。所以代码将是
$dotenv = Dotenv\Dotenv::createUnsafeImmutable(__DIR__);
$dotenv->load();
$DB_HOST = getenv('DB_HOST');https://stackoverflow.com/questions/30881596
复制相似问题