¿Cómo se puede establecer la PATHvariable de entorno para Apache2? Intenté configurarlo en /usr/sbin/envvarsy en httpd.conf con SetEnv PATH(y pasarlo a SSI con PassEnv), pero simplemente no se deja llevar.
apache-2.2
Matteo
fuente
fuente

Respuestas:
Como otros han dicho, esto se hace mediante el uso de un archivo de variable de entorno. Proporcionaré más detalles en esta respuesta y mostraré pruebas de que funciona.
Este archivo de variable de entorno debe ser fuente
apachectl. En mi cuadro de Ubuntu, este archivo está en/etc/apache2/envvars. En RedHat, esto es a las/etc/sysconfig/httpd. En FreeBSD, esto se establece en/etc/rc.conf(creo). Como alternativa, también puede configurar esta información en un script de inicio (/etc/init.d/httpdoapachectl, etc.). Sin embargo, creo que es mejor dejar solo los scripts de inicio si es posible. El mejor lugar es en el script de variables de entorno designado.Verifique la ubicación de este archivo envvars. En Ubuntu,
/etc/init.d/apache2ctlmuestra que las fuentes/etc/apache2/envvars:Para ver las variables, estoy usando un script de Perl printenv.cgi , y lo hice disponible en http://example.org/cgi-bin/printenv.cgi . El script me muestra el siguiente CAMINO:
Para cambiar estas variables, edito el archivo envvars:
Modifique su RUTA en este archivo. En este ejemplo, adjuntaré
/opt/local/bina mi RUTA. En algunos casos, es posible que deba usarexport PATHy no soloPATH:Reiniciar apache
Vea los resultados en http://example.org/cgi-bin/printenv.cgi , que ahora muestran que la RUTA ahora contiene un nuevo elemento:
Si lo anterior no funciona, puede estar sucediendo algo inusual. Quizás su guión esté ignorando o sobrescribiendo la RUTA.
fuente
gracefuly eso no causó que los cambios tuvieran efecto.http://httpd.apache.org/docs/2.2/mod/mod_env.html#setenv
fuente
En mi sistema lo es
/etc/apache2/envvars.fuente
PATHAsegúrate de haber cargado mod_env.
La sintaxis correcta es (ejemplo):
Esto funcionó para mí.
fuente
PATHPuede configurarlo en
start()función del guión de inicio, algo como esto:Cree una secuencia de comandos Perl para enumerar todas las variables de entorno:
Colóquelo
/var/www/cgi-biny verifiquehttp://domain.com/cgi-bin/env.cgique verá lo siguiente:fuente
En RedHat con Apache 2.4.x compilado desde la fuente con
--prefix=/usr --enable-layout=RedHatel archivo envvars se encuentra en/usr/sbin/envvars. Puedo confirmar que establecer la RUTA adecuada en ese archivo hace que Apache y PHP lo sepan.Usé el mismo enfoque que Stefan Lasiewski para determinar eso. Para Apache 2.4.12 , el
/usr/sbin/envvarsarchivo se origina en la línea 49 de/usr/sbin/apachectl.fuente
/usr/sbin/apachectlmenciona en su/etc/sysconfig/httpdlugar, que contiene: «Este archivo ya no se utiliza para configurar variables de entorno adicionales para el proceso httpd. Ha sido reemplazado por systemd. » Paste.debian.net/361218Edite el archivo plist Apache2 con el editor que desee (ejemplo usando vim):
Agregue lo siguiente al archivo plist:
Si la
EnvironmentVariablesclave ya existe, simplemente agregueal
<dict>NB: para Mac OSX 10.11 (EL Capitan) o superior, debe ejecutar el comando
csrutil disableen la Terminal después de reiniciar y presionar CMD + R y luego podrá editar este archivo.Reiniciar Apache2
fuente
En mi sistema Apache2 descubrí que muchos visitantes solo querían saquear mi colección cuidadosamente compilada de emoticones / emoticones (¡en serio!), Así que decidí usar un enlace simbólico generado aleatoriamente a la ruta del directorio que se recogería como un Apache2 variable, y era prácticamente imposible compartir enlaces.
Entonces, cada 30 minutos, cron ejecutó un script perl que reescribiría el archivo .htaccess e incluiría un SetEnv como puede ver a continuación:
Luego, en la parte superior de mis páginas PHP, leía la variable así, y más tarde en la página, esa variable se usaría para construir una ruta hacia el smiley apropiado:
¡Funciona para mí, y espero que te ayude!
fuente
PATH