1

我是苗条框架的新手。我会尝试在根文件夹项目中添加 .env 文件,然后我想访问 .env 文件中的值。我试过使用这个包https://github.com/vlucas/phpdotenv并在 index.php 中加载 .env。但是,当我尝试获取 .env 文件中的值时,使用 ex: getenv("DB_NAME") 它返回 false。不返回 DB_NAME 的字符串值。

.env

DB_HOST = localhost
DB_PORT = 3306
DB_NAME = DB
DB_USER = root
DB_PASSWORD = 

索引.php

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

我使用 slim 框架 ^4.*、web 服务器 laravel valet、数据库 MySQL。或者还有其他替代方法可以在苗条框架中配置 .env 吗?谢谢你。

4

1 回答 1

9

包自述文件

强烈建议不要使用 getenv() 和 putenv(),因为这些函数不是线程安全的,但是仍然可以指示 PHP dotenv 使用这些函数。可以调用 而不是 Dotenv::createImmutableDotenv::createUnsafeImmutable调用,这将在幕后添加 PutenvAdapter。您的环境变量现在可以使用 getenv 方法以及超级全局变量获得。

所以获取这些值的主要方法是使用$_ENV$_SERVER超全局不getenv()函数。

您应该尝试检索以下值:

$db_name = $_ENV['DB_NAME'];

或像包中提供的示例一样加载 .env 文件:

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

此外,请确保您传递正确的目录(.env 文件所在的目录)作为参数。这通常不应与index.php位于同一目录中,但您提供的示例代码暗示您将两个文件放在一个目录中。

于 2020-08-07T19:14:53.450 回答