2010-11-23 20 views

Respuesta

75

No recomendaría tratar de modificar la versión predeterminada de PHP que se llama en la línea de comandos. Si lo hace, puede romper otras partes de su sistema y también le puede ocasionar problemas en el futuro, en caso de que decida actualizar su sistema operativo.

Existe una alternativa que puede satisfacer sus necesidades. Puede crear un alias para su copia de php 5.3 de MAMP. En mi caso, nombré el alias phpmamp. Abra su terminal y escribe:

alias phpmamp='/Applications/MAMP/bin/php5.3/bin/php' 

Ahora, al escribir phpmamp en la línea de comandos pondrá en marcha el interperter MAMP php. Verificar esto escribiendo:

phpmamp --help 

lo más probable es que desee guardar este y cualquier otro alias, en un ~/.bash_profile Esto permitirá a los alias que persisten en los reinicios. De lo contrario, el alias sólo debe durar la sesión de terminal en particular se encuentra en Más información sobre cómo crear un archivo .bash_profile se puede encontrar aquí:.

http://www.redfinsolutions.com/redfin-blog/creating-bashprofile-your-mac

+3

En versiones posteriores, alias phpmamp = '/ Aplicaciones/MAMP/bin/php/php5.3.20/bin/php' reemplazar la porción 5.3.20 con tu versión – AWinter

+5

También puede crear un alias para "php" sí mismo, que haría lo que estaba pidiendo sin jugar con las configuraciones: alias php = '/ Aplicaciones/MAMP/bin/php5.3/bin/php' Esto sería necesario para herramientas automatizadas como Composer para usar la versión correcta de php. Recuerde también reiniciar la terminal o escriba "source ~/.bash_profile" para que el cambio surta efecto. – soulkphp

+1

FWIW, la última versión ha modificado un poco la ruta. Espero que esto ayude a alguien a evitar el purgatorio "encuentra mi camino". : D alias phpmamp = '/ Applications/MAMP/bin/php/php5.5.3/bin/php' –

99

he creado un enlace simbólico en la ubicación original de PHP.

1. Busque su OSX versión de PHP con:

which php 

El resultado debería ser:

/opt/local/bin/php 

2. Copia de seguridad (mover) el php binarios originales:

sudo mv /opt/local/bin/php /opt/local/bin/php.bak 

3. Crear el enlace simbólico:

sudo ln -s /Applications/MAMP/bin/php/php5.4.4/bin/php /opt/local/bin/php 

4.Ejecutar su nueva versión de php:

php -v 

PS:

Para que esto funcione sobre El-Capitan

  • Reinicie su Mac para recoveryMode (mantenga Cmd + R en arranque)
  • Abrir Terminal y entrar: csrutil disable
  • Reiniciar
  • ya sea: sudo ln -s /Applications/MAMP/bin/php/php5.4.4/bin/php /opt/local/bin/php
    o sudo ln -s /Applications/MAMP/bin/php/php5.4.4/bin/php /usr/bin/php
  • reinicie de nuevo a recoveryMode y volver a habilitar la seguridad: csrutil enable
+1

Esta fue la mejor solución para mí. Incluso cuando utilicé el alias de php, la consola de CakePHP continuaría usando la versión en/usr/bin /. –

+2

La mejor solución para mí también. Gracias Heiko – emjay

+1

Funciona como un encanto, alias en bashrc no funciona. Entonces debe hacerlo de esta manera. Gracias @Heiko – EthanZ

54

prefiero no interferir con los archivos actuales, por lo que simplemente escriba la carpeta bin MAMP PHP la variable de env $PATH.

Puede editar ~/.bash_profile y añadir la siguiente línea a la parte superior

export PATH="/Applications/MAMP/bin/php/php5.6.1/bin:$PATH"

Sólo cambia la versión de PHP a la versión actual que está utilizando.

No olvide hacer source ~/.bash_profile después de editar el archivo.

+2

Esto realmente funcionó para mí, ¡también es la forma más fácil de cambiar la versión de PHP rápidamente! –

+2

Esta es la forma más segura y sencilla, y no requerirá que vuelva a ejecutar las secuencias de comandos cada vez que se actualice el sistema operativo. – PaulSkinner

+0

¡La mejor respuesta! He usado un enlace simbólico varios años, pero simplemente cambiar la variable PATH es la manera más elegante, ya que no se restablecen las actualizaciones de MacOS. –

1

No estaba satisfecho con los resultados/soluciones que he encontrado en la red hasta ahora, porque las configuraciones de php.ini no se cargaron correctamente en todos los casos y en todos los sistemas, especialmente cuando se necesitan módulos como ioncube y otros (es aún más confuso en MAMP Pro). Es por eso que he creado mis propios alias de versión de php (con configs), así que he encontrado la siguiente solución, como ejemplo (basado en MAMP Pro, recuerde ajustar las rutas php.ini a sus necesidades):

editar su .bash_profile

vim ~/.bash_profile 

y añadir las siguientes entradas:

alias php55="/Applications/MAMP/bin/php/php5.5.26/bin/php -c '/Library/Application Support/appsolute/MAMP PRO/conf/php5.5.26.ini'" 
alias php56="/Applications/MAMP/bin/php/php5.6.10/bin/php -c '/Library/Application Support/appsolute/MAMP PRO/conf/php5.6.10.ini'" 
alias php56cgi="/Applications/MAMP/bin/php/php5.6.10/bin/php-cgi -c '/Library/Application Support/appsolute/MAMP PRO/conf/php5.6.10.ini'" 

reinicializar el .bash_profile en la sesión actual del terminal (de lo contrario no verá ningún cambio, a menos que reinicie el terminal):

source ~/.bash_profile 

Si tiene instalados algunos módulos adicionales, puede probarlos con php56 -v y obtener una salida de los módulos de ioncube, etc. De lo contrario, pruébelo con php56 -i | grep "yourModuleNameOrSomethingElse"

Ahora puede usar fácilmente una de las versiones de php como "php56" en su terminal con todas las configuraciones cargadas. Por lo tanto, es perfecto para probar y crear sus aplicaciones a través de todas las iteraciones de versiones, incluidas las configuraciones de php.ini correctas a través de la terminal.

Para usuarios normales de MAMP, las configuraciones deberían estar ubicadas en/Applications/MAMP/conf/I think. Feliz programacion

+0

¡Gracias por su respuesta! – emjay

0

Bueno, el error 'file exists' es probablemente porque usted intentó crear un sym-link con el nombre de un archivo que ya estaba allí. Supongo que estaba en el directorio que contiene la versión de php que intentaba reemplazar o que era un segundo intento y que no eliminó primero el sym-link existente. Estoy de acuerdo con los demás con respecto a no "reemplazar/modificar" la versión predeterminada de php.

Según la segunda parte de la pregunta, la mejor forma de evitar tener que escribir la ruta completa, las respuestas que sugieren un alias son correctas con eso. Sin embargo, cuando se trata de múltiples versiones, eso significa tener que llamar a algo que no sea php para ejecutar la versión que desea ejecutar.

Tengo un script que me permite "seleccionar" la versión de php con la que me gustaría trabajar y que luego crea un enlace simbólico a esa versión y me permite simplemente ingresar 'php' como mi comando cuando quiero usarlo Escribí un blog sobre él here donde puede obtener el guión. Según la respuesta dada por @ioCron, es posible que deba volver a visitar mi script para tener en cuenta las diferentes carpetas de configuración asociadas a cada versión.

0

bien nada de esto estaba trabajando para mí con OSX10.12.5

tengo puertos mac php70 instalados en/opt/local/bin

que mostró php:

/usr/bin/php 

me puse hasta los alias y las rutas locales, etc., que en su mayoría funcionaban para mí, pero otros programas fallaban (como el compositor), así que la solución para mí era anteponer:

/opt/local/bin 
/opt/local/sbin 

al archivo/etc/paths

¡entonces todo funcionó de maravilla!

Cuestiones relacionadas