¿Cómo se puede establecer la PATH
variable de entorno para Apache2? Intenté configurarlo en /usr/sbin/envvars
y 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/httpd
oapachectl
, 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/apache2ctl
muestra 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/bin
a mi RUTA. En algunos casos, es posible que deba usarexport PATH
y 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
graceful
y 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
PATH
Asegúrate de haber cargado mod_env.
La sintaxis correcta es (ejemplo):
Esto funcionó para mí.
fuente
PATH
Puede 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-bin
y verifiquehttp://domain.com/cgi-bin/env.cgi
que verá lo siguiente:fuente
En RedHat con Apache 2.4.x compilado desde la fuente con
--prefix=/usr --enable-layout=RedHat
el 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/envvars
archivo se origina en la línea 49 de/usr/sbin/apachectl
.fuente
/usr/sbin/apachectl
menciona en su/etc/sysconfig/httpd
lugar, 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
EnvironmentVariables
clave ya existe, simplemente agregueal
<dict>
NB: para Mac OSX 10.11 (EL Capitan) o superior, debe ejecutar el comando
csrutil disable
en 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