web-dev-qa-db-fra.com

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

J'exécute Drush sur un hôte qui a plusieurs versions de PHP installé. Par défaut, php --version vous 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 "Votre ligne de commande PHP est trop ancienne. Drush nécessite au moins PHP 5.3.2" des messages pour certaines commandes très utiles).

Quelques exemples vraiment ennuyeux:

  • drush pm-update signalera 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 renverra immédiatement l'erreur PHP version

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.

10
handsofaten

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

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

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

21
yvan

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's/\ $ 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/

2
Justin Levi Winter

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"% *

0
Wayne

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]

Le problème pour moi était que drush ne fonctionnait pas avec la bonne version 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): enter image description here

Ensuite, je suis allé dans mon fichier ~/.bashrc et j'ai ajouté une ligne qui définit PHP chemin 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!

0
Beto Aveiga