Composer verwendet falsche PHP-Version, aber php -v zeigt die richtige (Ubuntu)
Lesezeit: 4 Minuten
Ich versuche, meine Composer-Pakete zu installieren, aber es gibt mir Folgendes:
This package requires php >=7.0.0 but your PHP version (5.5.9)
Aber php -v gibt mir das: PHP 7.0.22-0ubuntu0.16.04.1 (cli) ( NTS )
Ich verwende eine Ubuntu 16.04.3 LTS-Maschine, ich habe einige Lösungen für Mac und Windows gefunden, aber niemand scheint das Problem unter Linux zu haben?
was macht ein phpinfo(); Call-Show in Ihrem Browser? Hatten Sie zuvor 5.5.9 installiert, bevor Sie 7.x installiert haben?
– Prahlerei
28. August 2017 um 7:48 Uhr
Seien Sie vorsichtig, da die CLI-Version anders sein kann, als phpinfo() anzeigt.
– Viktor
28. August 2017 um 7:54 Uhr
Sie müssen den alias php-Befehl verwenden, um die Sitzung zu bestehen
Bei der zweiten Lösung fälschst du im Grunde eine Plattform und rennst composer.phar update danach
Das funktioniert, aber was ist die Ursache dafür? which php zeigt an /usr/bin/php und /usr/bin/php -v zeigt an 7.0.22 auch…
– Primus
28. August 2017 um 8:08 Uhr
@PrimuS, ich weiß nicht, vielleicht ein composer‘s Fehler. Es hatte immer Probleme mit PHP-Versionen. Also lass es einfach akzeptieren. Es ist in Ordnung
– Benutzer10089632
28. August 2017 um 8:11 Uhr
Nein, das Ignorieren von Plattformanforderungen ist schlichtweg falsch und verbirgt das eigentliche Problem selbst. Stellen Sie sicher, dass Sie nur eine PHP-Version installiert haben. Dann sollte dies das Problem beheben. Siehe meine Antwort unten.
– Roland
15. Januar 2020 um 14:23 Uhr
@Roland hat Recht, dies ist keineswegs eine Antwort. & @Roland ist etwas falsch, OP kann mehrere PHP-Versionen haben, hat aber die gewünschte als Standard festgelegt. In Ubuntu OP verwenden können sudo apt update-alternative --config php dafür
– Md. A. Apu
14. November 2021 um 12:24 Uhr
Deshalb können wir keine schönen Dinge haben – Hackjobs…
– Jakob Thomason
17. März 2022 um 22:44 Uhr
Wenn Sie Debian-basierte Systeme verwenden, können Sie es mit dem folgenden Befehl auffordern, eine bestimmte Version global zu verwenden (abhängig davon, wie und wo Ihre PHP-Versionen installiert sind):
update-alternatives erstellt, entfernt, verwaltet und zeigt Informationen über die symbolischen Links an, die das Debian-Alternativen-System bilden.
Malek Zarkouna
Probieren Sie dies aus, es hat bei mir funktioniert:
alias php='/usr/local/php7/bin/php'
php composer.phar install
Herausgefunden, dass ich eine fest codierte PHP-Version hatte alias m='/usr/bin/php7.4 -d memory_limit=-1 bin/magento' das war der grund $ m s:d:c schlug mit Fehler fehl Ihre Composer-Abhängigkeiten erfordern eine PHP-Version “>= 8.0.0”. Sie führen 7.4.33 aus
– Damodar Bashyal
28. Dezember 2022 um 3:57 Uhr
Roland
composerverweist hier wie folgt auf die ausführbare PHP-Datei:
#!/usr/bin/env php
Wenn ich es tue which php Ich bekomme /c/Program Files/php-7.1/php unter GIT-Bash (Windows 10).
Unter Linux (zu Hause habe ich Debian), php kann ein symbolischer Link zu einer tatsächlichen PHP-Binärdatei sein.
Gehen Sie also wie folgt vor:
Überprüfen Sie das Gesagte noch einmal php mit ls -l `which php`
Stellen Sie sicher, dass Sie nur eine PHP-Version installiert haben. Dies kann dazu führen, dass inkompatible Versionen gemischt werden, was die Ursache Ihres Problems sein kann
Das sollte Ihnen helfen, die Ursache zu finden.
Nur hier teilen, weil ich das gleiche Problem hatte und diesen Thread beim Suchen zuerst gefunden habe. Bei mir hatte ich einen Windows Server mit PHP 5.6.? darauf sowie PHP 7.2.? darauf. Ich hatte IIS für die Verwendung von 7.2 konfiguriert, aber 5.6 befand sich noch in den Umgebungsvariablen unter Pfad. Öffnen Sie Systemeigenschaften> Registerkarte Erweitert> “Umgebungsvariablen …”. Bearbeiten Sie „Pfad“ und entfernen Sie den Verweis auf „C:/Programme (x86)/PHP/v5.6“ aus dem Pfad und speichern Sie. Starten Sie Ihr Terminal neu und Sie sollten eingestellt sein. Hoffe das hilft jemandem.
MC Kaiser
Ich bin vor kurzem auf das gleiche Problem gestoßen. php --version ist zurückgekommen 7.4.30aber Composer sagte, es würde PHP 8.0.18 verwenden.
Es stellt sich heraus, dass Composer seine eigene PHP-Version verwendet. Die composer -Skript enthält einen fest codierten Pfad zu PHP 8. (Für mich ist dies ein Composer-Fehler, da Composer den Wert von respektieren sollte config.platform.php Eigentum der composer.json Datei.)
Eine Option kann sein aliascomposer:
alias composer="/usr/local/bin/php /usr/bin/composer.phar
Eine andere Möglichkeit wäre das Umschreiben composer:
So habe ich es herausgefunden. Zuerst wollte ich den Standort finden composer. Durch die Nutzung whereis composerkann man den Pfad der finden composer Befehl. Bei mir ging es zurück
composer: /usr/bin/composer
Ich wollte dann den Inhalt sehen /usr/bin/composerdamit ich herausfinden könnte, was die composer Befehl tat unter der Haube. Durch die Nutzung cat /usr/bin/composerder Inhalt der composer Skript gedruckt werden. Bei mir ging es zurück
was macht ein phpinfo(); Call-Show in Ihrem Browser? Hatten Sie zuvor 5.5.9 installiert, bevor Sie 7.x installiert haben?
– Prahlerei
28. August 2017 um 7:48 Uhr
Seien Sie vorsichtig, da die CLI-Version anders sein kann, als phpinfo() anzeigt.
– Viktor
28. August 2017 um 7:54 Uhr
Sie müssen den alias php-Befehl verwenden, um die Sitzung zu bestehen
– Malek Zarkouna
28. August 2017 um 8:27 Uhr