Slim 框架中的设置文件 .env

Posted

技术标签:

【中文标题】Slim 框架中的设置文件 .env【英文标题】:Setup File .env in Slim Framework 【发布时间】:2020-11-28 02:59:42 【问题描述】:

我是苗条框架的新手。我会尝试在根文件夹项目中添加 .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 = 

index.php

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

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

【问题讨论】:

删除间距`=` 我试过了。但是还是不行。 【参考方案1】:

来自package readme file:

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

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

您应该尝试检索以下值:

$db_name = $_ENV['DB_NAME'];

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

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

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

【讨论】:

以上是关于Slim 框架中的设置文件 .env的主要内容,如果未能解决你的问题,请参考以下文章

PHP Slim 框架初体验之无法访问控制器

如何使用Slim框架支持API版本控制

Slim生成的ckpt文件转PB文件

Slim生成的ckpt文件转PB文件

Slim 框架总是返回 404 错误

如何在 .slim 中的代码标记内换行