Sonic_SE
@Sonic_SE

Testing, staging, production и Zend Framework?

Как лучше/проще переключать настройки на разных окружениях?


Upd: Zend документация советует APPLICATION_ENV.
  • Вопрос задан
  • 2974 просмотра
Пригласить эксперта
Ответы на вопрос 3
taliban
@taliban
php программист
php.net/manual/en/function.getenv.php
тут храните.
Ответ написан
Комментировать
zizop
@zizop
Для хранения названия среды окружения используйте переменную окружения, как здесь сказали. Например «APPLICATION_ENV».

Для определения среды окружения можно использовать такой алгоритм:

$test_domain = 'testsite.ru'; // домен тестового сервера
if(strpos($_SERVER['HTTP_HOST'], $test_domain) !== FALSE) {
$app_env = 'test';
} else {
$app_env = ($_SERVER['REMOTE_ADDR'] == $_SERVER['SERVER_ADDR']) ? 'development' : 'production';
}
define('APPLICATION_ENV', $app_env ? $app_env : 'production');



Для определения, находится ли приложение под юнит-тестированием можно использовать такой приём:
public static function isUnderUnitTest()
{
return $_SERVER['PHP_SELF'] === '/usr/bin/phpunit';
}

Ответ написан
Комментировать
slang
@slang
Zend не зря так советует, расчёт тут на то, что Вы корректно (по советам Zend) сетапите виртуал хосты, например апача. Тогда код будет универсален, и без захардкоженных имён доменов. Примерно вот так это выглядит (ZendTool создаёт тоже что-то подобное):
<VirtualHost hostname.local:80>
	ServerAdmin webmaster@hostname.local
	SetEnv APPLICATION_ENV "development"
	ServerName hostname.local
	DocumentRoot /home/hostname.local/htdocs
	<Directory />
		Options FollowSymLinks
	</Directory>
	<Directory /home/hostname.local/htdocs/>
		Options Indexes FollowSymLinks MultiViews
		Order allow,deny
		allow from all
	</Directory>
	ErrorLog /var/log/apache2/error.log
	LogLevel warn
	CustomLog /var/log/apache2/access.log combined
</VirtualHost>

Обратите внимание на строку 3. Тут задаётся переменная окружения для хоста, и в случае, когда универсальный код деплоится на этот хост, он работает в «development» режиме. Естесственно на продакшне и прочих свои конфиги виртуал хоста, причём по умолчанию код отрабатывает в продакшн-режиме. Это идея Zend, сами Вы конечно можете городить свой огород, хотя, как мне кажется из опыта, этот наиболее удобен.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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