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的主要内容,如果未能解决你的问题,请参考以下文章