Mir gefällt, wie das in Zend Framework funktioniert. Ich kann wissen, welche Umgebung ich gerade verwende, indem Sie die APPLICATION_ENV-Konstante in meinem Controller überprüfen.
<VirtualHost *:80>
#ServerName
#DocumentRoot
SetEnv APPLICATION_ENV "development"
# Directory
</VirtualHost>
Leider kann ich ZF in meinem aktuellen Projekt nicht verwenden. Wie kann ich diese Umgebungsvariable in meinem PHP Code überprüfen?
Da SetEnv der Wert für die Umgebung von Apache ist, können Sie ihn mit abrufen
Apache_getenv
- Ruft eine Apache-Subprozess-Variable aboder nur
getenv
- Ruft den Wert einer Umgebungsvariablen abWenn Sie in einem ZF-Projekt auf public/index.php
schauen, werden Sie sehen, dass ZF getenv
verwendet:
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ?
getenv('APPLICATION_ENV') :
'production'));
Eine häufig verwendete Alternative wäre, den Hostnamen von PHP zu lesen und die Konstante entsprechend zu definieren:
if(!defined('APPLICATION_ENV')) {
if(FALSE === stripos($_SERVER['SERVER_NAME'], 'www.yourdomain.com')) {
define(APPLICATION_ENV, 'development');
} else {
define(APPLICATION_ENV, 'production');
}
}
Auf diese Weise müssen Sie sich nicht auf die Umgebungseinstellungen verlassen.
SetEnv
definiert eine Umgebungsvariable.
Nachdem dies festgelegt wurde, (entweder in der Konfiguration Ihres Apache oder auf Systemebene), können Sie seinen Wert mit der Funktion getenv
lesen:
echo getenv('APPLICATION_ENV');
Wenn Sie dies beispielsweise in Ihrer .htaccess
-Datei verwenden:
SetEnv TEST glop
Sie können diesen Teil des PHP -Codes verwenden:
var_dump(getenv('TEST'));
Und du bekommst:
string 'glop' (length=4)
sie können auch über die Variable $_SERVER
darauf zugreifen.
Ich hatte das gleiche Problem und löste es dann. Um das Problem zu lösen, müssen Sie alle Variablen in einem Apache-Init-Skript deklarieren.
Ich verwende Apache für Centos und das Init-Skript befindet sich in /etc/init.d/httpd
.
Fügen Sie diesen Code hinzu, ändern Sie ihn jedoch entsprechend Ihrem spezifischen Fall.
Oracle_HOSTNAME=ora11g.home.com; export Oracle_HOSTNAME
Oracle_BASE=/u01/app/Oracle; export Oracle_BASE
Oracle_HOME=$Oracle_BASE/product/11.2.0/db_1; export Oracle_HOME
Oracle_SID=ora11g; export Oracle_SID
Oracle_TERM=xterm; export Oracle_TERM
PATH=$Oracle_HOME/bin:/usr/sbin:$PATH; export PATH
LD_LIBRARY_PATH=$Oracle_HOME/lib:/lib:/usr/lib;
export LD_LIBRARY_PATH
CLASSPATH=$Oracle_HOME/JRE:$Oracle_HOME/jlib:$Oracle_HOME/rdbms/jlib;
export CLASSPATH
Das hat mein Problem gelöst. Ich hoffe das hilft.