2011-07-26 15 views
28

Estoy tratando de obtener apache/php para reconocer la ruta a mi git. He estado investigando y buscando en todos los rincones de la web y no puedo encontrar cómo hacerlo. Básicamente, no importa lo que intento, cuando ejecuto echo phpinfo();, la ruta Apache Environment no cambia de /usr/bin:/bin:/usr/sbin:/sbin. Y cuando ejecuto system('echo $PATH'); en PHP, se lee igual.

información del sistema:

  • Mac OS X (Lion)
  • Apache 2 (que se ejecuta como _www)
  • PHP 5.3.6

Aquí es lo que he tratado de edición hasta ahora:

  • /etc/profile
  • ~/.bash_profile
  • ~/.profile
  • /etc/ruta
  • /etc/path.d/{NEW_FILE}

Nada de lo que he probado hasta ahora ha cambiado la variable $PATH. ¿Algunas ideas?

SOLUCIÓN

Así que aquí es la solución final. He editado el

/System/Library/LaunchDaemons/org.apache.httpd.plist 

y añadió

<key>EnvironmentVariables</key> 
<dict> 
    <key>PATH</key> 
    <string>/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin</string> 
</dict> 
+0

[¿Ha intentado apagarlo y volver a encenderla] (http://www.youtube.com/watch?v=nn2FB1P_Mn8)? (En serio, sin embargo, ¿has reiniciado Apache desde que hiciste esto?) – cwallenpoole

+1

Muy buena sugerencia, pero sí. –

+1

Estaba teniendo problemas para ejecutar PHP '' exec() '' donde el shell de Apache tenía una RUTA diferente a la de mi Mac. Esto resolvió mi problema. – swt83

Respuesta

30

Puede establecer la variable de entorno PATH en /System/Library/LaunchDaemons/org.apache.httpd.plist.

Más en el docs.

+0

Sí, leí otra pregunta aquí sobre esto. Intenté esto también. Y no funcionó. Tengo errores de apache con esto. –

+0

Acabo de volver a intentar esto y funcionó. No estoy seguro de por qué no lo hizo antes. Pero esta parece ser la solución. –

+2

TBH, no sé si funciona igual en OS X, pero en nixes "normales" *, un comando de reinicio para el proceso de apache no reinicia el proceso, por lo tanto, no obtiene un entorno actualizado (lo que hace hacer es que vuelve a leer sus archivos conf). Quizás algo similar está en juego aquí. – Monolo

4

¿Ha actualizado la variable de entorno PATH del usuario '_www'? Apache leerá las variables de entorno del usuario. O bien, parece que no reinició Apache después de actualizar la variable de entorno PATH.

Y si desea modificar la variable de entorno en PHP, getenv() y putenv() puede ser una mejor opción.

+0

Intenté eso también. No funcionó –

+1

El 'putenv()' es solo una buena solución si modifica su código PHP directamente. No es una buena solución permanente si tiene que agregar eso a TODAS las secuencias de comandos/aplicaciones php que escriba. –

+2

cómo editar la varilla PATH para los usuarios _www que no existe en/users? –

0

para el servidor de Ubuntu, en/etc/apache2/envvars, para el servidor centos, en/etc/sysconfig/httpd, para añadir:

export PATH=<your php cli path> 

y reiniciar Apache

0

Un problema similar a lo que estaba teniendo la instalación de Derby. La forma en que lo resolví fue abriendo TextEdit. Seleccione Archivo> Abrir en este punto, presione Mayús + Comando +. , esto te permitirá ver todos los documentos. Dirígete al directorio de usuarios y busca un archivo llamado ".profile". Abrirla y añadir la VARIABLE exportación = línea Valor por ejemplo:

DERBY_HOME exportación =/opt/local/share/java/derby/

Guardar el documento y reiniciar su terminal para ver si los cambios fueron a afectar .

0

he creado este GIST que me ayudó a salir de la información anterior:

https://gist.github.com/srayhunter/5208619

Mi problema fue que PHP no era encontrar un programa que habíamos instalado en/usr/local/bin. Una vez que hicimos lo anterior, todo funcionó y jugó bien en mac osx.

nota
+0

esencia se ha ido .. :( – Tieme

3

importante para El Capitán (Disculpas por la nueva respuesta - no tengo representante suficiente para comentar)

en OSX 10.11, la carpeta/System/Library está protegido, por lo que los archivos no se pueden editado

es necesario:

  • Reinicie en modo de recuperación (CMD bodega + R tras el sonido de inicio)
  • Una vez en el modo de recuperación, vaya a Utilidades> Terminal
  • Run: csrutil disable
  • Reinicia de nuevo en OSX - ahora debería poder cambiar los archivos
  • Una vez hecho esto, regrese al modo de recuperación y ejecute csrutil enable

Espero que ayude

Cuestiones relacionadas