%20und%20CLI%20unterschiedlich%3F.png)
Mir ist aufgefallen, dass es eine Nichtübereinstimmung zwischen der von phpinfo()
und php -v
(in der CLI) gemeldeten PHP-Version gibt.
phpinfo(): 5.5.24
php -v: 5.6.9
Ich arbeite auf einem Mac OS X 10.10 (Yosemite) und habe eine Bibliothek ( php-version
) installiert, um zu versuchen, die PHP-Versionen zu verwalten.
Es werden mir drei verschiedene Versionen gemeldet, die auf meinem Laptop installiert sind:
5.4.41
5.5.25
* 5.6.9
Ich möchte sowohl in Apache als auch in CLI die gleiche PHP-Version einstellen.
Wie kann ich Apache mitteilen, welche PHP-Version verwendet wird?
Ich habe versucht, diese Zeile in mein zu schreiben httpd.conf
:
LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so
Dann:
sudo apachectl restart
Aber all das löst das Problem nicht… In meinen PHP-Infos steht immer noch: 5.5.24
Antwort1
Hier gibt es ein paar verschiedene Probleme, die sich alle unter dem Begriff der PHP-Versionsverwirrung verbergen. Ich werde also versuchen, jedes davon so klar wie möglich zu behandeln. Zunächst dies:
Mir ist aufgefallen, dass es eine Nichtübereinstimmung zwischen der von
phpinfo()
undphp -v
(in der CLI) gemeldeten PHP-Version gibt.phpinfo(): 5.5.24 php -v: 5.6.9
PHP CLI ist nicht dasselbe wie das PHP-Apache-Modul.
Wie ich in der Antwort aufdiese andere Frage hier, keine Panik! Wenn Sie sich Sorgen 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 beeinträchtigen.
Achten Sie einfach auf die Ausgabe, phpinfo()
wenn Sie die richtige PHP-Modulversion in Apache einstellen möchten.
Dennoch scheinen Sie immer noch Probleme zu haben, das richtige PHP-Modul in Apache zu laden:
Ich habe versucht, diese Zeile in mein zu schreiben
httpd.conf
:LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so
Stellen Sie sicher, dass Ihr Apache-Server das richtige PHP-Modul lädt.
Obwohl Ihr Vorgehen technisch gesehen richtig zu sein scheint, besteht der einzige Grund, warum es meines Erachtens nicht funktionieren sollte, darin, dass LoadModule php5_module
die Apache-Konfigurationsdateien irgendwie eine andere Anweisung enthalten, die den von Ihnen in dieser Zeile festgelegten Wert außer Kraft setzt.
Ich würde empfehlen, die Datei durchzusehen httpd.conf
, die sich vermutlich hier befindet /etc/apache2/httpd.conf
, und zu prüfen, ob es vielleicht noch eine andere gibt LoadModule php5_module
, die Sie übersehen oder beim Bearbeiten dieser Datei nicht bemerkt haben. Wenn ich mir meine entsprechende Datei in Mac OS X 10.9.5 anschaue, sehe ich, dass die Zeile auskommentiert ist – da ich keine Mac OS X Apache/PHP-Setups verwende – und ungefähr so lautet:
#LoadModule php5_module libexec/apache2/libphp5.so
In Ihrem Fall wäre es natürlich unkommentiert. Weitere Details zur Konfiguration von Apache und PHP für die Webentwicklungfinden Sie auf dieser Seite.
Erwägen Sie ernsthaft die Verwendung von MAMP als Alternative zu den Eigenheiten von Mac OS X Apache/PHP.
Nun, das alles gesagt, ich weiß nicht, was Sie versuchen zu tun, aber wenn Sie Web-Entwicklung auf einem Mac OS X-System tun, sollten Sie ernsthaft erwägen, verwendenMAMPanstatt den zentralen Web-Stack von Mac OS X zu hacken, um die Dinge zum Laufen zu bringen.
Der Vorteil von MAMP besteht darin, dass es ein Mac OS X-Äquivalent eines LAMP-Stacks auf Produktionsniveau ist. Und da es auf die reale Webentwicklung ausgerichtet ist, sind alle Module und Konfigurationen genau so eingerichtet, wie man sie einrichten sollte.
Das Hauptproblem mit Apache und PHP unter Mac OS X ist, dass die Software in der Regel veraltet ist, sich mühsam konfigurieren/optimieren und verwalten lässt und das Debuggen in solchen Fällen Kopfschmerzen bereitet. Und was passiert, wenn ein Mac OS X-Update herauskommt, das Ihre sorgfältig eingerichteten Apache- und PHP-Einstellungen löscht? Dann sind Sie wieder am Ausgangspunkt.
Antwort2
Ich habe die Lösung für mein Problem gefunden. Nach der Bearbeitung /etc/apache2/httpd.conf
habe ich Apache mit folgendem neu gestartet:
sudo apachectl restart
Aus irgendeinem Grund konnte Apache mit diesem Befehl die Aktualisierungen nicht abrufen httpd.conf
und die alte Konfiguration nicht laden.
Verwendung:
sudo apachectl -k stop
sudo apachectl -k start
Machen Sie eine Art Hard-Reset aller Dienste und lesen Sie auch die Updates in der Konfigurationsdatei und lesen Sie schließlich den neuen Pfad für php5_module
:
/usr/local/opt/php56/libexec/apache2/libphp5.so
Danke auch@Giacomo1968 für seine Erklärung.
Antwort3
In meiner Situation (Windows-Server mit installiertem Composer) hatte Composer auch Pfade zu verschiedenen PHP-Erweiterungen in php.ini fest codiert (z. B. Erweiterung=C:/php7-3-27/ext/php_gd2.dll). Also musste ich diese auch ändern. Dies änderte immer noch nicht die Version, die in phpinfo() angezeigt wurde, das von einer Apache-Webseite aufgerufen wurde. Es stellte sich heraus, dass Composer auch meinen alten PHP-Versionsordner zu den PATH-Umgebungsvariablen hinzugefügt hatte, also musste ich das ändern, damit es auf meinen neuen PHP-Ordner zeigte, bevor die Versionsänderung wirksam wurde.
Sie müssen natürlich sicherstellen, dass Ihre httpd.conf gemäß den anderen Antworten in diesem Thread aktualisiert wird. Wenn das jedoch nicht funktioniert, überprüfen Sie den Pfad zu php.ini, der in phpinfo() aufgeführt ist, und überprüfen Sie auch diese ^^ Dinge.