La versión de PHP no se detecta correctamente

10

Estoy ejecutando Drush en un host que tiene múltiples versiones de PHP instaladas. Por defecto, php --versionle daría 5.2.x, pero php53 y php54 también están disponibles. Entonces, en mi .bash_profile tengo alias php='php53'( php --version= 5.3.13), lo que hace que Drush funcione para algunos comandos.

Sin embargo, sigo recibiendo "La instalación de PHP en la línea de comandos es demasiado antigua. Drush requiere al menos mensajes PHP 5.3.2" para algunos comandos muy útiles.

Un par de instancias realmente molestas:

  • drush pm-updateinformará que ha realizado una copia de seguridad y luego actualizó todos los módulos y el núcleo correctamente, luego devolverá el error de versión de PHP y restaurará todas las copias de seguridad. En modo detallado, el comando que viene antes del error es: php /home/[username]/drush/drush.php --backend=2 --verbose --root=/home/[username]/webapps/drup --uri=http://[domain name] pm-updatecode-postupdate 2>&1
  • drush archive-dump inmediatamente devolverá el error de versión de PHP

Los otros comandos que he probado hasta ahora funcionan bien. No estoy seguro de por qué sería esto, si Drush a veces usa el binario php53, y otras veces no, o si simplemente tiene problemas para detectar la versión correctamente, pero algunas funciones muy importantes están rotas para mí.

comido a mano
fuente

Respuestas:

21

Drush no usa solo php directamente como comando, sino que necesita la ruta completa. Con la última versión de Drush, puede agregar la siguiente línea en su .bash_profilepara establecer qué PHP desea usar.

export DRUSH_PHP=/Applications/MAMP/bin/php/php5.3.14/bin/php

Este es solo un ejemplo de MAMP, pero también puede cambiarlo con su propia ruta.

yvan
fuente
1
Para refinar la explicación anterior: cuando Drush vuelve a llamar a sí mismo, ejecuta 'php' y toma el primer php en su RUTA. Los alias de bash no son visibles para php exec, por lo que no se ve alias php = 'php53'. La explicación anterior soluciona el problema, como lo haría export DRUSH_PHP=php53. Otra solución sería asegurar que php53 aparezca en su RUTA antes que cualquier otro PHP cuando ejecute Drush.
greg_1_anderson
si está usando oh_my_zsh, asegúrese de .zshrc
Esto me lo arregló. Aunque tuve que hacerlo source .bash_profilepor efecto inmediato
Alma
lo siento pero no puedo entender dónde está este archivo .bash_profile. ¿Dónde puedo encontrar ti?
Shyghar
1
Si está utilizando MAMP, la configuración de la variable DRUSH_PHP no es suficiente. Ver docs.drush.org/en/7.x/configure
sea26.2
2

Aquí hay otra solución:

  1. Cree un enlace simbólico a la versión deseada de php (php5.4 en mi caso) ln -s / usr / local / bin / php54 ~ / bin / php

  2. necesitamos cambiar la precedencia de ~ / bin en $ PATH para que aparezca antes de / usr / local / bin (donde se encuentra el intérprete php original) encuentre ~ / -name .bash_profile | xargs sed -i 's / \ $ PATH: \ $ HOME / bin / \ $ HOME / bin: \ $ PATH / g'

  3. recargar .bash_profile source ~ / .bash_profile

procedente de: http://webiga.com/2013/06/22/change-default-version-of-php-at-webfaction/

Justin Levi Winter
fuente
0

Me encontré con esto después de actualizar Drush en Windows. El servidor tiene una versión anterior de PHP ejecutándose y no estaba recogiendo la versión de PHP que venía con Drush.

Pude solucionarlo especificando la ruta a php.exe en el archivo drush.bat, ubicado en

c: \ documentos y configuraciones \ todos los usuarios \ datos de la aplicación \ drush \ drush.bat

Acabo de agregar la ruta completa a PHP cambiando esta línea:

@ php.exe "% ~ dp0drush.php" --php = "php.exe"% * para esto:

@ "c: \ archivos de programa \ drush \ php \ php.exe" "% ~ dp0drush.php" --php = "php.exe"% *

Wayne
fuente
0

El problema para mí fue que drush no funcionaba con la versión correcta de PHP, creo que el problema era que estaba usando PHP 7, y necesitaba PHP 5.6. Entonces corrí en la consola:

whereis php

Y el resultado fue (ver la ruta PHP para 5.6): ingrese la descripción de la imagen aquí

Luego fui a mi archivo ~ / .bashrc y agregué una línea que establece la ruta de PHP para drush (y guardar):

export DRUSH_PHP = / usr / bin / php5.6

Luego actualicé .bashrc con lo siguiente (no te pierdas el punto al comienzo del comando):

. ~ / .bashrc

¡Y eso es! ¡Espero que ayude!

Beto Aveiga
fuente
0

Suponiendo que instaló drush con el compositor y desea ejecutar su comando usando php 7 (esto también funciona para el envia en la nube de adquirir)

/usr/local/php7.1/bin/php ../vendor/drush/drush/drush.php --php = / usr / local / php7.1 / bin / php [your_drush_command_here]

Juan Sebastián Contreras Aceve
fuente