[英]How to use .env file in smarty?
我是 smarty 模板的新手。 我的所有数据库设置都在 /inc/settings/DSOPSettings.local.php 但每次我从 git 中获取更改时它都会覆盖。
我试图在 smarty 模板项目根目录中设置.env 文件试图在 DSOPSettings.local.php 文件中获取环境变量,但这对我不起作用。
我的.env 文件:
DB_WRITE_HOST=localhost
DB_WRITE_USER=root
DB_WRITE_PASS=test
DB_WRITE_DBASE_DEV=storytalk
我的 DSOPSettings.local.php:
define('DB_WRITE_HOST', env('DB_WRITE_HOST'));
define('DB_WRITE_USER', env('DB_WRITE_USER'));
define('DB_WRITE_PASS', env('DB_WRITE_PASS'));
define('DB_WRITE_DBASE_DEV', env('DB_WRITE_DBASE_DEV'));
我也尝试过如下获取环境变量但不工作。
define('DB_WRITE_HOST', getenv('DB_WRITE_HOST'));
define('DB_WRITE_USER', getenv('DB_WRITE_USER'));
define('DB_WRITE_PASS', getenv('DB_WRITE_PASS')));
define('DB_WRITE_DBASE_DEV', getenv('DB_WRITE_DBASE_DEV'));
我怎样才能使它工作? 提前致谢!
我正在寻找一种在 smarty 中加载 env 的方法。 我找到了它并按如下方式实现。
.env
DB_WRITE_USER=root
DB_WRITE_PASS=test
DB_WRITE_DBASE_DEV=storytalk
我创建了一个 class 来加载 all.env 变量。 环境.php
<?php
namespace EnvironmentSettings;
class Env
{
public function __construct()
{
}
public function load($path)
{
if (!file_exists($path)) {
throw new \InvalidArgumentException(sprintf('%s does not exist', $path));
}
if (!is_readable($path)) {
throw new \RuntimeException(sprintf('%s file is not readable', $this->path));
}
$lines = file($path, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($lines as $line) {
if (strpos(trim($line), '#') === 0) {
continue;
}
list($name, $value) = explode('=', $line, 2);
$name = trim($name);
$value = trim($value);
if (!array_key_exists($name, $_SERVER) && !array_key_exists($name, $_ENV)) {
putenv(sprintf('%s=%s', $name, $value));
$_ENV[$name] = $value;
$_SERVER[$name] = $value;
}
}
return true;
}
}
将其加载到任何文件中,如下所示:
$env = new EnvironmentSettings\Env();
$env->load(INSTALLED_ROOT_PATH.INSTALLED_PATH."/.env");
现在将它与 getenv() function 一起使用。 前任。 getenv('DB_WRITE_USER')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.