2008-09-22 12 views
5

Solo quiero que mi apache registre parte de mi entorno predefinido para que pueda recuperarlo utilizando la función getenv en php. ¿Cómo puedo hacer esto? Intenté agregar /etc/profile.d/foo.sh con exportar FOO =/bar/baz usando root y reiniciando Apache.reinicializar la variable de entorno de todo el sistema en linux

+0

¿Qué distribución? Esto impacta en la mejor manera de hacer esto. – freespace

Respuesta

6

Las variables de entorno se heredan mediante procesos en Unix. Los archivos en /etc/profile.d solo se ejecutan (en el shell actual, no en una subshell) cuando inicia sesión. Simplemente cambiar el valor allí y luego reiniciar un proceso no actualizará el entorno.

Correcciones posibles:

  • de registro/Ingresar, a continuación, iniciar Apache
  • fuente del archivo: # . /etc/profile.d/foo.sh, a continuación, reinicie Apache
  • fuente el archivo en el guión Apache init

También debe asegurarse de que /etc/profile.d/ se origine cuando Apache se inicie por init en lugar de usted.

La mejor solución también puede depender de la distribución que esté utilizando, ya que utilizan diferentes esquemas para la configuración.

+0

Bueno. Tenga en cuenta que el script de inicio de apache podría cambiar en las actualizaciones. –

0

Puede usar SetEnv en sus archivos de configuración (/etc/httpd/conf.d/*.conf, .htaccess ...). Además, debe poder definirlos en/etc/sysconfig/httpd (en distribs basados ​​en RPM) y exportarlos (nota: no probados).

Nota: no me sorprendería que algunas distribuciones intentaran ocultarse lo más posible, en lo que se refiere a la configuración del sistema, desde un servicio de acceso público como Apache. Y si no lo hacen, podrían comenzar a hacer esto en una versión futura. Por lo tanto, te aconsejo que hagas esto explícitamente. Si necesita compartir un entorno entre Apache y sus conchas, que podría intentar abastecimiento /etc/profile.d/yourprofile.sh de /etc/sysconfig/httpd

0

archivos de configuración de Apache le permiten establecer variables de entorno por sitio.

Así que si su servidor web está sirviendo páginas de dos sitios lógicos, puede tener la misma variable de entorno establecida de forma diferente para cada sitio y obtener así que su PHP reaccione de manera diferente.

Véase el Apache mod_env para más detalles:

0

Si necesita env vars por sólo Apache, lo que funcionó para mí estaba editando el /etc/apache2/envvars y el reinicio de Apache. Agregué estas configuraciones:

export LANG='en_US.UTF-8' 
export LC_ALL='en_US.UTF-8' 
Cuestiones relacionadas