Zend framework автоматический переключатель производства постановка тест.. и т.д.
Что я могу изменить, чтобы перейти от постановки к постановке и т.д. и где.. Bootstrap?
Кроме того, Любопытно, если кто-либо настроил Zend Framework для автоматического переключения с
производство, постановка, испытание и т.д. на основе информации о хосте.
пример..
if (hostname = 'prodServer') ... blah
if (hostname = 'testServer') ... blah
Я новичок в Zend, но я обычно настраиваю свои проекты для автоматического переключения
на основе информации о хосте.
спасибо
Ответы
Ответ 1
Предполагая, что вы используете APPLICATION_ENV как часть Zend_Application, вы можете добавить это либо в ваш .htaccess, либо в главный конфигурационный файл Apache (при условии, что Apache используется) все равно должны быть доступны и на разных веб-серверах.
Например, в вашем .htaccess/config (предполагается mod_setenv):
SetEnvIf HTTP_HOST abc.example.com APPLICATION_ENV=production
SetEnvIf HTTP_HOST def.example.com APPLICATION_ENV=staging
SetEnvIf HTTP_HOST ghi.example.com APPLICATION_ENV=development
Затем убедитесь, что APPLICATION_ENV установлен в index.php, используя:
// Define application environment
defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
Это добавляется Zend_Tool, если вы используете его для создания проекта.
Ответ 2
Это работает для меня в .htaccess
SetEnvIf Host dev.mydomain.ca APPLICATION_ENV=development
SetEnvIf Host mydomain.ca APPLICATION_ENV=production
SetEnvIf Host mydomain.localhost APPLICATION_ENV=production
Затем в моем приложении application.ini
[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1
; Database for development
resources.db.params.dbname = "mydabase-dev"
Ответ 3
Мы определяем переменную среды (ENVPHP) и используем ее в наших файлах конфигурации XML, поэтому загружаются правильные параметры БД, если вы определяете правильную переменную среды ENVPHP. Используя XML, вы можете расширять (или переопределять) ваши общие параметры с параметрами для определенных сред.
т. конфигурация выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<application>
<common>
<name>MyApp_name</name>
<code>MyApp_code</code>
<version>MyApp_version</version>
<authentication>
... authentication specific parameters (ie. LDAP connection parameters)
</authentication>
...
</common>
<dev extends="common">
<database>
... DB connection parameters for development
</database>
...
</dev>
<tst extends="common">
<database>
... DB connection parameters for test
</database>
...
</tst>
<prd extends="common">
<database>
... DB connection parameters for production
</database>
...
</prd>
</application>
И для загрузки конфигурации у меня есть следующее в моей начальной загрузке (ну, собственно, в одном классе Singleton):
public static function getEnv()
{
if (self::$env === null) {
self::$env = getenv('ENVPHP');
} else {
return self::$env;
}
}
protected function initConfig ()
{
$configFile = $this->appDir . '/config/application.xml';
if (! is_readable($configFile)) {
throw new Application_Exception('Config file "' . $configFile . '" is not readable');
}
if (false === self::getEnv()) {
throw new Application_Exception('The environment variable "ENVPHP" is not defined');
}
$config = new Zend_Config_Xml($configFile, self::getEnv(), true);
$config->setReadOnly();
Zend_Registry::set('config', $config);
$this->config = $config;
}
В PHP-коде, если я хочу делать что-то только для определенных сред, я использую Application:: getEnv(), чтобы проверить, в какой среде я вхожу, и выполнить код, который я хочу в соответствии с ним.
BTW Переменная окружения ENVPHP может быть установлена в файле конфигурации apache, используя, например,. SetEnv ENVPHP "dev"
в вашем контейнере VirtualHost. Для скриптов CLI PHP вы должны установить его как переменную среды ОС...
Ответ 4
Лучшим способом, который я видел, является:
index.php - production
index_dev.php - dev, index_dev.php/controller/action
Я также пробовал файлы с именем named configs:
base.ini - base config
localhost.ini - dev config
prod.host.com.ini - prod config
но первый подход намного лучше.