Mir ist aufgefallen, dass die von gemeldete PHP-Version nicht übereinstimmt phpinfo()
und php -v
(in der CLI) .
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 3 verschiedene Versionen gemeldet, die auf meinem Laptop installiert sind:
5.4.41
5.5.25
* 5.6.9
Ich möchte die gleiche Version von PHP in Apache und CLI einstellen.
Wie kann ich Apache mitteilen, welche PHP-Version verwendet wird?
Ich habe versucht, diese Zeile zu schreiben in httpd.conf
:
LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so
Dann:
sudo apachectl restart
Aber das alles löst das Problem nicht ... In meinen PHP-Infos habe ich noch: 5.5.24
apache-http-server
php
Salvatore Dibenedetto
quelle
quelle
Antworten:
Ein paar verschiedene Probleme, die sich alle unter dem Konzept der Verwirrung um die PHP-Version verstecken, werden daher versuchen, jedes Problem so klar wie möglich anzugehen. Zuerst das:
PHP CLI ist nicht dasselbe wie das PHP Apache-Modul.
Wie ich in der Antwort auf diese andere Frage hier erkläre , 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.Achten
phpinfo()
Sie einfach auf die Ausgabe von, wenn Sie Bedenken haben, die richtige PHP-Modulversion in Apache festzulegen.Das heißt, Sie scheinen immer noch Probleme damit zu haben, das richtige PHP-Modul in Apache zu laden:
Stellen Sie sicher, dass Ihr Apache-Server das richtige PHP-Modul lädt.
Obwohl das, was Sie technisch gemacht haben, korrekt zu sein scheint, ist der einzige Grund, warum ich sehe, dass dies nicht funktioniert, eine andere
LoadModule php5_module
Anweisung in den Apache-Konfigurationsdateien, die den Wert, den Sie für diese Zeile festlegen, ersetzt.Ich würde empfehlen, in der Datei zu suchen, von der
httpd.conf
ich annehme, dass sie sich hier befindet,/etc/apache2/httpd.conf
und zu prüfen, ob es tatsächlich eine andere gibtLoadModule php5_module
, die Sie beim Bearbeiten dieser Datei verpasst oder nicht bemerkt haben. Wenn ich mir meine entsprechende Datei in Mac OS X 10.9.5 ansehe, sehe ich, dass die Zeile auskommentiert ist, da ich keine Apache / PHP-Setups für Mac OS X verwende.Natürlich wäre es in Ihrem Fall unkommentiert. Weitere Informationen zum Konfigurieren von Apache und PHP für die Webentwicklung finden Sie auf dieser Website .
Erwägen Sie ernsthaft die Verwendung von MAMP als Alternative zu Apache / PHP-Macken unter Mac OS X.
Trotzdem weiß ich nicht, was Sie vorhaben, aber wenn Sie auf einem Mac OS X-System eine Webentwicklung durchführen, sollten Sie ernsthaft in Erwägung ziehen, MAMP zu verwenden, anstatt den zentralen Mac OS X- Webstack zu hacken, um die gewünschten Informationen zu erhalten Laufen.
Der Vorteil von MAMP ist, dass es sich um ein extrem produktives Mac OS X-Äquivalent eines LAMP-Stacks handelt. Und da es auf echte Webentwicklung ausgerichtet ist, enthält es alle Module und Konfigurationen genau so, wie man sie einrichten sollte.
Das Hauptproblem bei Apache und PHP unter Mac OS X besteht darin, dass die Software in der Regel veraltet ist, Probleme beim Konfigurieren / Optimieren und Verwalten sowie Kopfschmerzen beim Debuggen auftreten, wenn solche Probleme auftreten. Und was ist, wenn ein Mac OS X-Update auf den Markt kommt, das Ihre sorgfältig eingerichteten Apache- und PHP-Einstellungen zunichte macht? Sie sind zurück auf Platz eins.
quelle
Ich habe die Lösung für mein Problem gefunden. Nach der Bearbeitung habe
/etc/apache2/httpd.conf
ich Apache neu gestartet:Aus irgendeinem Grund konnte Apache mit diesem Befehl die Aktualisierungen in der nicht abrufen
httpd.conf
und die alte Konfiguration laden.Verwenden von:
Führen Sie einen harten Neustart aller Dienste durch und lesen Sie auch die Aktualisierungen in der Konfigurationsdatei und lesen Sie schließlich den neuen Pfad für
php5_module
:Danke auch @JakeGould für seine Erklärung .
quelle
-k
Markierung aus denapachectl
Befehlen zu entfernen, da, wenn Sieapachectl -h
diese Markierung / Option markieren, sie dort nicht vorhanden ist. Keine Ahnung, woher du das hast. Während Sie angeben, Dinge zu erledigenstop
und zustart
klären, ist das Seltsame, dassrestart
Linux-Systeme genau das tun . Wenn Sie das Skript überprüfen, in dem es sich befindet/usr/sbin/apachectl
(es ist ein Skript, verwenden Sie also einen beliebigen Texteditor zum Anzeigen), scheint es genau das auch zu tun. Vielleicht ist dasLaunchDaemons
für Apache unter Mac OS X im Vergleich zu Standard-Linux einfach "komisch"? Wie auch immer, toll, dass du das gelöst hast./usr/sbin/apachectl
(ohne Befehl) und es eindeutig fest,[-k start|restart|graceful|graceful-stop|stop]
. Ich bin so daran gewöhnt, wie Apache auf Linux-Systemen funktioniert, dass ich das-k
Flag für die Verwendung mitapachectl
Befehlen vergessen zu haben scheint . In dem Wissen, dass das eigentliche Problem, das Sie hatten, der Versuch ist, mit diesem Befehl neu zu starten,sudo apachectl restart
wenn das-k
Flag wie folgt hinzugefügt werden solltesudo apachectl -k restart
.