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

    – Malek Zarkouna

    28. August 2017 um 8:27 Uhr

Versuche dies:

composer install --ignore-platform-reqs

oder dies in composer.json

"config": {
    "preferred-install": "dist",
    "platform": {
        "php": "7.0.0"
    }
}

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):

sudo update-alternatives --set php /usr/bin/php7.2

update-alternatives erstellt, entfernt, verwaltet und zeigt Informationen über die symbolischen Links an, die das Debian-Alternativen-System bilden.

Benutzeravatar von Malek Zarkouna
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

Benutzeravatar von Roland
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.

Benutzeravatar von MC Emperor
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.)

  1. Eine Option kann sein alias composer:

    alias composer="/usr/local/bin/php /usr/bin/composer.phar
    
  2. Eine andere Möglichkeit wäre das Umschreiben composer:

    cat /usr/bin/composer \
        | sed "s~/usr/bin/php8~/usr/local/bin/php~g' \
        > /usr/bin/composer.tmp
    mv /usr/bin/composer.tmp /usr/bin/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

#!/bin/sh

/usr/bin/php8 /usr/bin/composer.phar "$@"

Da ist es. Die composer Befehl verwendet fest codiert /usr/bin/php8 die auszuführen composer.phar Datei.

Benutzeravatar von Yuri Tinyukov
Juri Tinjukow

Nun, das hat bei mir funktioniert

$ alias composer="php /usr/bin/composer.phar"
$ composer install

Verwenden Sie zum Beispiel die exakte PHP-Binärdatei im Alias

$ alias composer="php8.1 /usr/bin/composer.phar"

1440240cookie-checkComposer verwendet falsche PHP-Version, aber php -v zeigt die richtige (Ubuntu)

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy