skeleton - Establezca Application_ENV a través de la configuración de host virtual y lea esto en PHP
zend framework model (4)
Como SetEnv establece el valor para el entorno de Apache, puede obtenerlo con
-
apache_getenv
- Obtenga una variable subprocess_env de Apache
o solo
-
getenv
- Obtiene el valor de una variable de entorno
Si miras public/index.php
en un proyecto de ZF, verás que ZF usa getenv
:
// Define application environment
defined(''APPLICATION_ENV'')
|| define(''APPLICATION_ENV'', (getenv(''APPLICATION_ENV'') ?
getenv(''APPLICATION_ENV'') :
''production''));
Una alternativa de uso frecuente sería leer el nombre de host de PHP y definir la constante en consecuencia:
if(!defined(''APPLICATION_ENV'')) {
if(FALSE === stripos($_SERVER[''SERVER_NAME''], ''www.yourdomain.com'')) {
define(APPLICATION_ENV, ''development'');
} else {
define(APPLICATION_ENV, ''production'');
}
}
De esta forma, no tiene que depender en absoluto de la configuración del entorno.
Me gusta cómo funciona esto en Zend Framework. Puedo saber qué entorno estoy usando al verificar la constante APPLICATION_ENV en mi controlador.
<VirtualHost *:80>
#ServerName
#DocumentRoot
SetEnv APPLICATION_ENV "development"
# Directory
</VirtualHost>
Pero desafortunadamente no puedo usar ZF en mi proyecto actual. ¿Cómo puedo verificar esta variable de entorno en mi código PHP?
Tuve el mismo problema, lo resolví. La forma de resolver el problema es declarar todas las variables en un script de inicio apache.
Estoy usando apache en centos y el script de inicio se encuentra en /etc/init.d/httpd
Agregue este código, pero cámbielo para que se ajuste a su caso específico.
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
Esto resolvió mi problema. Espero que esto ayude.
también puede acceder desde la variable $_SERVER
.
SetEnv
define una variable de entorno.
Una vez que esto se haya establecido (ya sea en la configuración de su Apache, o en el nivel del sistema) , puede leer su valor usando la función getenv
:
echo getenv(''APPLICATION_ENV'');
Por ejemplo, si usa esto en su archivo .htaccess
:
SetEnv TEST glop
Puedes usar esta porción de código PHP:
var_dump(getenv(''TEST''));
Y obtendrás:
string ''glop'' (length=4)