Мне нравится, как это работает в Платформе Зенда. Я могу знать, какую среду я в настоящее время использую путем проверки APPLICATION_ENV, постоянного в мой контроллер.
<VirtualHost *:80>
#ServerName
#DocumentRoot
SetEnv APPLICATION_ENV "development"
# Directory
</VirtualHost>
Но к сожалению я не могу использовать ZF в своем текущем проекте. Как я могу проверить эту переменную среды в свой код PHP?
Поскольку 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');
}
}
Таким образом, вам вообще не нужно полагаться на настройку среды.
SetEnv
определяет переменную окружения.
Как только она установлена (либо в конфигурации вашего Apache, либо на системном уровне), вы можете прочитать ее значение с помощью функции getenv
:
echo getenv('APPLICATION_ENV');
Например, если вы используете это в вашем .htaccess
файле :
SetEnv TEST glop
Вы можете использовать эту часть PHP кода :
var_dump(getenv('TEST'));
И вы получите :
string 'glop' (length=4)