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 吗?谢谢你。
从包自述文件:
强烈建议不要使用 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位于同一目录中,但您提供的示例代码暗示您将两个文件放在一个目录中。