Набор Application_ENV через виртуальный хост конфигурируют и читают это в PHP

Мне нравится, как это работает в Платформе Зенда. Я могу знать, какую среду я в настоящее время использую путем проверки APPLICATION_ENV, постоянного в мой контроллер.

<VirtualHost *:80>
    #ServerName 
    #DocumentRoot

        SetEnv APPLICATION_ENV "development"

    # Directory
</VirtualHost>

Но к сожалению я не могу использовать ZF в своем текущем проекте. Как я могу проверить эту переменную среды в свой код PHP?

49
задан Nikita Fedyashev 4 March 2010 в 01:32
поделиться

2 ответа

Поскольку SetEnv устанавливает значение для среды Apache, вы можете получить его с помощью

  • apache_getenv - получить переменную Apache subprocess_env

или просто

  • getenv - получить значение переменной среды

Если вы посмотрите на public / index.php в проекте ZF, вы увидите, что ZF использует getenv :

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? 
                                  getenv('APPLICATION_ENV') : 
                                  'production'));

Часто используемой альтернативой будет считывать имя хоста из PHP и соответствующим образом определять константу:

if(!defined('APPLICATION_ENV')) {
    if(FALSE === stripos($_SERVER['SERVER_NAME'], 'www.yourdomain.com')) {
        define(APPLICATION_ENV, 'development');
    } else {
        define(APPLICATION_ENV, 'production');
    }
}

Таким образом, вам вообще не нужно полагаться на настройку среды.

47
ответ дан 7 November 2019 в 11:53
поделиться

SetEnv определяет переменную окружения.

Как только она установлена (либо в конфигурации вашего Apache, либо на системном уровне), вы можете прочитать ее значение с помощью функции getenv :

echo getenv('APPLICATION_ENV');


Например, если вы используете это в вашем .htaccess файле :

SetEnv TEST glop

Вы можете использовать эту часть PHP кода :

var_dump(getenv('TEST'));

И вы получите :

string 'glop' (length=4)
11
ответ дан 7 November 2019 в 11:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: