如何在smarty中使用.env文件



我是smarty模板的新手。我的所有数据库设置都在/inc/settings/DSOPSettings.local.php中,但每次我从git获取更改时,它都会覆盖。

我试图在smarty模板项目根目录中设置.env文件,试图在DSOPSettings.local.php文件中获取env变量,但对我不起作用。

我的.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'));

我也尝试过如下获取env变量,但没有成功。

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

我创建了一个类来加载所有.env变量。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 EnvironmentSettingsEnv();
$env->load(INSTALLED_ROOT_PATH.INSTALLED_PATH."/.env"); 

现在将其与getenv((函数一起使用。示例getenv('DB_WRITE_USER')

最新更新