Die PHP-Version wird nicht korrekt erkannt

10

Ich führe Drush auf einem Host aus, auf dem mehrere Versionen von PHP installiert sind. Standardmäßig php --versionwürden Sie 5.2.x erhalten, aber php53 und php54 sind auch verfügbar. In meinem .bash_profile habe ich also alias php='php53'( php --version= 5.3.13), wodurch Drush für einige Befehle funktioniert.

Ich erhalte jedoch weiterhin die Meldung "Ihre Befehlszeilen-PHP-Installation ist zu alt. Drush benötigt mindestens PHP 5.3.2" für einige sehr nützliche Befehle.

Ein paar wirklich nervige Beispiele:

  • drush pm-updatemeldet, dass alle Module und der Kern erfolgreich gesichert und aktualisiert wurden, gibt dann den PHP-Versionsfehler zurück und stellt alle Sicherungen wieder her. Im ausführlichen Modus lautet der Befehl vor dem Fehler: 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 gibt sofort den PHP-Versionsfehler zurück

Die anderen Befehle, die ich bisher ausprobiert habe, funktionieren einwandfrei. Ich bin mir nicht sicher, warum dies so ist, wenn Drush manchmal die php53-Binärdatei verwendet und manchmal nicht, oder wenn es nur Probleme gibt, die Version korrekt zu erkennen, aber einige sehr wichtige Funktionen für mich defekt sind.

handsofaten
quelle

Antworten:

21

Drush verwendet nicht nur PHP direkt als Befehl, sondern benötigt den vollständigen Pfad. Mit der letzten Version von Drush können Sie die folgende Zeile hinzufügen, um festzulegen, .bash_profilewelches PHP Sie verwenden möchten.

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

Hier ist nur ein Beispiel für MAMP, aber Sie können es auch mit Ihrem eigenen Pfad ändern.

yvan
quelle
1
Um die obige Erklärung zu verfeinern: Wenn Drush in sich selbst zurückruft, führt er 'php' aus und nimmt das erste PHP in Ihrem PATH. Bash-Aliase sind für php exec nicht sichtbar, daher wird der Alias ​​php = 'php53' nicht angezeigt. Die obige Erklärung behebt das Problem wie gewohnt export DRUSH_PHP=php53. Eine andere Lösung wäre, sicherzustellen, dass php53 in Ihrem PATH vor jedem anderen PHP erscheint, wenn Sie Drush ausführen.
Greg_1_anderson
Wenn Sie oh_my_zsh verwenden, stellen Sie sicher, dass .zshrc
Das hat es für mich behoben. Obwohl ich source .bash_profilefür sofortige Wirkung tun musste
Alma
Entschuldigung, aber ich kann nicht verstehen, wo sich diese Datei .bash_profile befindet. Wo finde ich ti?
Shyghar
1
Wenn Sie MAMP verwenden, reicht die Konfiguration der Variablen DRUSH_PHP nicht aus. Siehe docs.drush.org/en/7.x/configure
sea26.2
2

Hier ist eine andere Lösung:

  1. Erstellen Sie einen symbolischen Link zur gewünschten Version von PHP (in meinem Fall PHP5.4) in -s / usr / local / bin / php54 ~ / bin / php

  2. Wir müssen die Priorität von ~ / bin in $ PATH so ändern, dass sie vor / usr / local / bin (wo sich der ursprüngliche PHP-Interpreter befindet) angezeigt wird. find ~ / -name .bash_profile | xargs sed -i / \ $ PATH: \ $ HOME / bin / \ $ HOME / bin: \ $ PATH / g '

  3. Laden Sie .bash_profile source ~ / .bash_profile neu

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

Justin Levi Winter
quelle
0

Ich bin gerade darauf gestoßen, nachdem ich Drush unter Windows aktualisiert habe. Auf dem Server wird eine ältere Version von PHP ausgeführt, und die mit Drush gelieferte Version von PHP wurde nicht übernommen.

Ich konnte das Problem beheben, indem ich den Pfad zu php.exe in der Datei drush.bat unter angab

c: \ Dokumente und Einstellungen \ Alle Benutzer \ Anwendungsdaten \ drush \ drush.bat

Ich habe gerade den vollständigen Pfad zu PHP hinzugefügt, indem ich diese Zeile geändert habe:

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

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

Wayne
quelle
0

Das Problem für mich war, dass drush nicht mit der richtigen PHP-Version funktionierte. Ich denke, das Problem war, dass es PHP 7 verwendete und ich PHP 5.6 brauchte. Also rannte ich in die Konsole:

wo ist php

Und das Ergebnis war (siehe PHP-Pfad für 5.6): Geben Sie hier die Bildbeschreibung ein

Dann ging ich zu meiner ~ / .bashrc-Datei und fügte eine Zeile hinzu, in der der PHP-Pfad für drush (und save) festgelegt ist:

exportiere DRUSH_PHP = / usr / bin / php5.6

Dann habe ich .bashrc mit folgendem aktualisiert (verpassen Sie nicht den Punkt am Anfang des Befehls):

. ~ / .bashrc

Und das ist es! Ich hoffe, das hilft!

Beto Aveiga
quelle
0

Angenommen, Sie haben drush mit Composer installiert und möchten Ihren Befehl mit PHP 7 ausführen (dies funktioniert auch für 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
quelle