簡體   English   中英

如何在 smarty 中使用 .env 文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM