La version PHP n'est pas correctement détectée

10

J'exécute Drush sur un hôte sur lequel plusieurs versions de PHP sont installées. Par défaut, php --versionvous donnerait 5.2.x, mais php53 et php54 sont également disponibles. Donc, dans mon .bash_profile, j'ai alias php='php53'( php --version= 5.3.13), ce qui fait fonctionner Drush pour certaines commandes.

Cependant, je reçois toujours des messages "Votre installation PHP en ligne de commande est trop ancienne. Drush nécessite au moins PHP 5.3.2" pour certaines commandes très utiles.

Quelques exemples vraiment ennuyeux:

  • drush pm-updatesignalera qu'il a sauvegardé puis mis à jour tous les modules et le noyau avec succès, puis renvoie l'erreur de version PHP et restaure toutes les sauvegardes. En mode verbeux, la commande qui précède l'erreur est: 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 retournera immédiatement l'erreur de version PHP

Les autres commandes que j'ai essayées jusqu'à présent fonctionnent bien. Je ne sais pas pourquoi ce serait, si Drush utilise parfois le binaire php53, et d'autres fois pas, ou s'il a juste du mal à détecter la version correctement, mais certaines fonctionnalités très importantes sont cassées pour moi.

handsofaten
la source

Réponses:

21

Drush n'utilise pas seulement php directement comme commande, mais a besoin du chemin complet. Avec la dernière version de Drush, vous pouvez ajouter la ligne suivante dans votre .bash_profilepour définir le PHP que vous souhaitez utiliser.

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

Voici juste un exemple de MAMP, mais vous pouvez aussi le changer avec votre propre chemin.

yvan
la source
1
Pour affiner l'explication ci-dessus: lorsque Drush rappelle en lui-même, il exécute «php» et prend le premier php dans votre PATH. Les alias de bash ne sont pas visibles par php exec, donc l'alias php = 'php53' n'est pas vu. L'explication ci-dessus résout le problème, comme le ferait export DRUSH_PHP=php53. Une autre solution serait de s'assurer que php53 apparaît dans votre PATH avant tout autre PHP lors de l'exécution de Drush.
greg_1_anderson
si vous utilisez oh_my_zsh, assurez-vous que .zshrc
Cela m'a arrangé. Bien que je devais le faire source .bash_profilepour un effet immédiat
Alma
désolé mais je ne comprends pas où se trouve ce fichier .bash_profile. Où puis-je trouver du ti?
Shyghar
1
Si vous utilisez MAMP, la configuration de la variable DRUSH_PHP n'est pas suffisante. Voir docs.drush.org/en/7.x/configure
sea26.2
2

Voici une autre solution:

  1. Créez un lien symbolique vers la version souhaitée de php (php5.4 dans mon cas) ln -s / usr / local / bin / php54 ~ / bin / php

  2. nous devons changer la priorité de ~ / bin dans $ PATH afin qu'il apparaisse avant / usr / local / bin (où se trouve l'interpréteur php d'origine) trouver ~ / -name .bash_profile | xargs sed -i / \ $ PATH: \ $ HOME / bin / \ $ HOME / bin: \ $ PATH / g '

  3. recharger la source .bash_profile ~ / .bash_profile

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

Justin Levi Winter
la source
0

Je viens de rencontrer cela après avoir mis à jour Drush sur Windows. Le serveur a une ancienne version de PHP en cours d'exécution et il ne récupérait pas la version de PHP fournie avec Drush.

J'ai pu le corriger en spécifiant le chemin d'accès à php.exe dans le fichier drush.bat, situé à

c: \ documents et paramètres \ tous les utilisateurs \ données d'application \ drush \ drush.bat

Je viens d'ajouter le chemin complet vers PHP en changeant cette ligne:

@ php.exe "% ~ dp0drush.php" --php = "php.exe"% * à ceci:

@ "c: \ program files \ drush \ php \ php.exe" "% ~ dp0drush.php" --php = "php.exe"% *

Wayne
la source
0

Le problème pour moi était que drush ne fonctionnait pas avec la bonne version de PHP, je pense que le problème était qu'il utilisait PHP 7, et j'avais besoin de PHP 5.6. J'ai donc couru dans la console:

où est php

Et le résultat était (voir le chemin PHP pour 5.6): entrez la description de l'image ici

Ensuite, je suis allé dans mon fichier ~ / .bashrc et j'ai ajouté une ligne qui définit le chemin PHP pour drush (et enregistrer):

export DRUSH_PHP = / usr / bin / php5.6

Ensuite, j'ai mis à jour .bashrc avec ce qui suit (ne manquez pas le point au début de la commande):

. ~ / .bashrc

Et c'est tout! J'espère que cela pourra aider!

Beto Aveiga
la source
0

En supposant que vous avez installé drush avec composer et que vous souhaitez exécuter votre commande en utilisant php 7 (cela fonctionne également pour acquia cloud envs)

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

Juan Sebastian Contreras Aceve
la source