Slim Framework 中的设置文件 .env

Alk*_*ana 0 php slim phpdotenv

我是瘦框架的新手。我会尝试在根文件夹项目中添加 .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 = 
Run Code Online (Sandbox Code Playgroud)

索引.php

$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
Run Code Online (Sandbox Code Playgroud)

我使用纤薄的框架 ^4.*、Web 服务器 laravel 代客、数据库 MySQL。或者还有其他替代方法可以在超薄框架中配置 .env 吗?谢谢你。

Nim*_*ima 8

包自述文件

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

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

您应该尝试检索以下值:

$db_name = $_ENV['DB_NAME'];
Run Code Online (Sandbox Code Playgroud)

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

$dotenv = Dotenv\Dotenv::createUnsafeImmutable(__DIR__);
$dotenv->load();
Run Code Online (Sandbox Code Playgroud)

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