Wir definieren eine Umgebungsvariable (ENVPHP) und verwenden diese in unseren XML-Konfigurationsdateien, so dass die korrekten DB-Parameter geladen werden, solange Sie die richtige ENVPHP-Umgebungsvariable definieren. Mit XML können Sie Ihre allgemeinen Parameter mit denen für die spezifischen Umgebungen erweitern (oder überschreiben).
dh. die folgenden in meinem Bootstrap (na ja, eigentlich in einer Anwendung Singletonklasse)
<?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>
und die Konfiguration zu laden, ich habe:
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;
}
In PHP-Code, wenn ich möchte, dass die Konfiguration sieht wie folgt aus Um einige Dinge nur für bestimmte Umgebungen zu tun, verwende ich Application :: getEnv(), um zu überprüfen, in welcher Umgebung ich bin, und den entsprechenden Code auszuführen.
BTW Die Umgebungsvariable ENVPHP kann in Ihrer Apache-Konfigurationsdatei mit ie festgelegt werden. SetEnv ENVPHP "dev"
in Ihrem VirtualHost-Container.
SetEnvIf Host dev.mydomain.ca APPLICATION_ENV=development
SetEnvIf Host mydomain.ca APPLICATION_ENV=production
SetEnvIf Host mydomain.localhost APPLICATION_ENV=production
Dann in meiner Anwendung in .htaccess für CLI PHP-Skripte sollten Sie es als OS-Umgebungsvariable ...
SetEnvIf Host def.example.com APPLICATION_ENV = Staging funktioniert für mich – Yeroon
besser scheint zu sein: SetEnvIf HOST^abc.example.com $ APPLICATION_ENV = Produktion ... – Kamil