Kürzere Antwort.
Keine Panik! Wenn Sie sich Gedanken darüber machen, welche PHP-Version Ihr Apache-Server verwendet, phpinfo()
sollten Sie immer auf die Ausgabe von achten. Das Apache PHP-Modul und die PHP-Befehlszeilen-Binärdatei sind zwei verschiedene Dinge, die sich nicht gegenseitig stören.
Tatsächlich können Sie verschiedene PHP-Versionen kompilieren und laden, die Sie mit Apache verwenden möchten, solange Sie Apache so anpassen, dass es ordnungsgemäß geladen wird. Die PHP-Befehlszeilenschnittstelle wird beim Parsen von PHP-Seiten durch Apache niemals ins Spiel kommen.
Die Befehlszeilenversion von PHP ist einfach für befehlszeilenspezifische Aufgaben verfügbar und das PHP-Modul für Apache wird diese niemals berühren, verwenden oder benötigen.
Längere Antwort.
Du sagst das:
Ich wollte wissen, welche php
Version ich verwende, also schrieb ich das Standard-Skript:
phpinfo();
Das gibt mir PHP Version 5.6.10 - die richtige PHP-Version, die für meine Anwendung benötigt wird. Als ich es im Terminal versuchte:
php -i or php -v
Es zeigt mir PHP Version 5.3.2, die ich nicht brauche.
Die über die Befehlszeile verfügbare PHP-Version hat zu 100% nichts mit der als Modul geladenen PHP-Version zu tun. Dies sind völlig getrennte Dinge.
Wenn Sie sich also Gedanken darüber machen, welche PHP-Version Ihre Webanwendung verwendet, phpinfo()
wird Version 5.6.10 angezeigt, und genau das, was Sie wollen / brauchen, ist zu 100% in Ordnung.
Die Kommandozeilenversion von PHP ist ein völlig eigenständiges Systemelement. Das einzige, was zählt, ist die Ausgabe von phpinfo()
.
Wenn Sie aus irgendeinem Grund eine andere PHP-Version mit Apache verwenden möchten, müssen Sie nur das kompilierte Apache-PHP-Modul irgendwo installieren und diese Zeile in der Apache-Konfiguration Ihres Systems hinzufügen oder anpassen:
LoadModule php5_module /path/to/php/and/the/module/for/apache2/libphp5.so
Passen Sie einfach den Pfad an den Pfad an, den libphp5.so
Apache zum Parsen von PHP verwendet. Starten Sie dann Apache neu und Sie sind im Geschäft.
Zum Beispiel musste ich einmal PHP 5.1.6 aus dem Quellcode kompilieren (mit Unterstützung für die GD-Bibliothek), um es auf einem Ubuntu 12.04-Computer mit PHP 5.3.5 zu verwenden. In der PHP-Modul-Ladedatei des Servers hier:
/etc/apache2/mods-available/php5.load
Ich hatte Zeilen wie diese:
# LoadModule php5_module /usr/lib/apache2/modules/libphp535.so
LoadModule php5_module /usr/lib/apache2/modules/libphp516-gd.so
Beachten Sie, wie eine Zeile libphp535.so
für libphp516-gd.so
auskommentiert und die andere für nicht kommentiert ist? Ich habe das standardmäßige PHP 5.3.5 libphp5.so
Apache-Modul in libphp535.so
mit der Versionsnummer im Namen umbenannt, damit ich es als Referenz dort haben kann, und dann das PHP 5.1.6-Modul (mit Unterstützung für GD-Bibliotheken) benannt, libphp516-gd.so
damit ich weiß, was das ist ist auch. Auf diese Weise stehen mir beide nebeneinander auf dem System zur Verfügung.
Und - wie eingangs gesagt - die in der Kommandozeile verwendete PHP-Version hat mit dem Apache-PHP-Modul überhaupt nichts zu tun. Sie können also eine beliebige Anzahl verschiedener Versionen von Apache-PHP-Modulen auf dem System bereitstellen. Passen Sie einfach eine Konfiguration an und starten Sie Apache neu. Sie sollten alle im Geschäft sein, um die PHP-Version zu verwenden, die Sie für Apache angegeben haben.
Wenn Sie versuchen, PHP-Code von Ihrem Webserver auszuführen, verwenden Sie die Version, die von
phpinfo()
= 5.6.10 gemeldet wird .Auf Ihrem Server sind anscheinend mehrere Versionen von PHP installiert. Wenn Sie sich anmelden und
php
in der Befehlszeile ausführen , erhalten Sie die ältere Version, die unter / usr / bin / php installiert ist.Ein Server kann viele PHP-Versionen haben, und Ihre scheint es zu sein.
Wenn Sie dasselbe PHP wie Ihren Webserver manuell ausführen müssen, müssen Sie die andere Version suchen. Versuchen Sie, diese Befehle auszuführen:
In einem Fall wird möglicherweise ein PHP mit der gleichen Version wie Ihr Webserver angezeigt. Wenn Sie herausfinden, um welche Version es sich handelt, können Sie diese Version anstelle der Standardversion verwenden.
quelle
Wenn ich meine 2 Cent addieren darf ...
Ich habe meine Nextcloud-Version aktualisiert. Wenn ich die Upgrade-Prozedur ausführe, muss ich "sudo php" als Apache-Benutzer angeben, die Ausführung wurde jedoch abgelehnt, da die vom Apache-Benutzer standardmäßig ausgeführte PHP-CLI-Version zu alt war. Allerdings phpinfo (); auf meinem server wird die aktuellste installierte php version angezeigt.
Mir wurde klar, dass dies daran liegt, dass die Variable PATH in der Datei /home/apache/.bashrc auf die erste Version von PHP gesetzt wurde, die ich auf meinem Server installiert hatte , und dass sie nie wieder aktualisiert wurde (ich kompiliere / installiere PHP immer aus dem Quellcode von Github) )
Die Lösung:
Wenn Sie PHP auf Ihrem Webserver aktualisieren und sicherstellen möchten, dass die verwendete CLI-PHP-Version die aktuellste ist, wenn Sie sudo als Apache-Benutzer verwenden, vergessen Sie nicht, sie in der .bashrc-Datei dieses Benutzers wie folgt zu ändern:
PATH=$PATH:/var/www/html: /usr/local/php7.1.32/bin export PATH
quelle
Schritte, um dies zu beheben. Zuallererst, welche PHP-Version es Ihnen zeigt.
Jetzt benötigen Sie einen PHP-Pfad. Wenn Sie nicht wissen, können Sie sich an Ihren Hosting-Support für PHP-Pfad wenden. In meinem Fall war es das
Jetzt ist es Zeit, diesen Befehl im Terminal auszuführen.
Dadurch wird Ihre PHP-Version auf PHP 7.1 geändert. Wenn Sie die Version auf 7.2 ändern möchten, können Sie dies versuchen
Du bist fertig. Überprüfen Sie es mit
quelle
Erstellen Sie einen Umgebungsvariablenpfad für die neueste Version von PHP, zB: C: \ wamp64 \ bin \ php \ php7.2.4. Ändern Sie nun Ihren vorherigen PHP-Versionsordner .php5.6.35 in eine andere Nummer. Php5.6.354 server und cli php werden gleich sein
quelle