2010-05-31 19 views
8

Quiero pasar una variable de entorno en Linux a Apache en el inicio.PHP y variables de entorno Apache

MYVAR exportación = 5 --que definir mi variable de entorno en la línea de comandos

PassEnv MYVAR --set Apache importar la variable en el archivo de configuración de Apache

apachectl reiniciar --cuando yo reinicie apache No obtengo un mensaje de error. Sin embargo, me he dado cuenta de que si no crear la variable de entorno en mi primer paso, aparece un mensaje de advertencia, por lo que debo estar trabajando aquí

echo $ _SERVER [ 'MYVAR'] --que tratar de acceder al variable de entorno dentro de PHP pero no está definida

He observado que si trato de pasar a PassEnv una variable de entorno que ya existe (una que no he creado) funciona bien. La directiva SetEnv también funciona bien.

Me gustaría pasar una variable de entorno a apache sobre la marcha sin escribirlo en un archivo. Ayuda muy apreciada.

Estoy usando CentOS, PHP5 y Apache2.

Gracias.

actualización parece que la variable de entorno se pasa si invoco la puesta en marcha Apache directamente con httpd y apachectl no uso, que es una secuencia de comandos shell. Hubiera pensado que la "exportación" habría exportado la variable al script de shell ¿no? No soy un gurú de Linux, así que disculpa mi falta de conocimiento.

Respuesta

10

Si desea que la variable de entorno que se pasa a Apache, usted debe asegurarse de que dicha variable de entorno se define por el medio ambiente que se ejecuta Apache. Para hacer eso, la opción más sencilla es añadir una línea export MYVAR=value a envvars (debe ubicarse en/etc/apache2) o la secuencia de comandos que inicia apache (en /etc/init.d), y agregue su PassEnv MYVAR donde lo desee en su configuración de apache.

Al reiniciar apache debería asegurarse de que se pase la variable de entorno MYVAR. Que yo sepa que no será capaz de cambiar el valor de esta var mientras se ejecuta Apache, aunque ...

Algo de información relevante para esta versión: http://php.dzone.com/news/inserting-variable-headers-apa&default=false&zid=159&browser=16&mid=0&refresh=0

1

Para ampliar la respuesta wimvds' anterior; puede cambiar las variables de entorno mientras Apache se ejecuta con el módulo SetEnvIf. Específicamente, la directiva SetEnvIf de dicho módulo.

p. Ej.

SetEnvIf Request_URI "^.*\/foobar.*$" FOOBAR="something" 

El ejemplo anterior fijará el medio ambiente FOOBAR variable $ a "algo" si la expresión coincide con la petición URI (en este caso, cualquier URI que contenga la palabra "foobar"). Puede definir esto en el archivo de configuración de su host (generalmente en /etc/apache2/sites-available/mywebsite.conf o algo similar).

Cuestiones relacionadas