Uświadomiłem sobie, że istnieje błąd dopasowania między wersją PHP zgłoszoną przez phpinfo()
i php -v
(w CLI).
phpinfo(): 5.5.24
php -v: 5.6.9
Pracuję na systemie Mac OS X 10.10 (Yosemite) i zainstalowałem bibliotekę ( php-version
), aby spróbować zarządzać wersjami PHP.
Zgłasza mi 3 różne wersje zainstalowane na moim laptopie:
5.4.41
5.5.25
* 5.6.9
Chciałbym ustawić tę samą wersję PHP zarówno w Apache, jak i CLI.
Jak mogę powiedzieć Apache, której wersji PHP używa?
Próbowałem napisać ten wiersz w moim httpd.conf
:
LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so
Następnie:
sudo apachectl restart
Ale to wszystko nie rozwiązuje problemu… W moich informacjach o PHP wciąż mam: 5.5.24
apache-http-server
php
Salvatore Dibenedetto
źródło
źródło
Odpowiedzi:
Kilka różnych problemów tutaj ukrytych pod pojęciem pomyłki w wersji PHP, więc postaram się rozwiązać każdy z nich tak wyraźnie, jak to możliwe. Najpierw to:
PHP CLI to nie to samo, co moduł PHP Apache.
Jak wyjaśniam w odpowiedzi na to drugie pytanie tutaj , nie panikuj! Jeśli obawiasz się, jakiej wersji PHP używa twój serwer Apache, wynik
phpinfo()
zawsze jest tym, na co powinieneś zwrócić uwagę. Moduł Apache PHP i plik binarny wiersza poleceń PHP to dwie różne rzeczy, które nie kolidują ze sobą.Zwróć uwagę na wynik,
phpinfo()
jeśli obawiasz się ustawić poprawną wersję modułu PHP w Apache.To powiedziawszy, nadal masz problemy z załadowaniem prawidłowego modułu PHP załadowanego do Apache:
Upewnij się, że Twój serwer Apache ładuje odpowiedni moduł PHP.
Chociaż to, co technicznie zrobiłeś, wydaje się poprawne, jedynym powodem, dla którego widzę, że to nie działa, jest jakaś inna
LoadModule php5_module
dyrektywa w plikach konfiguracyjnych Apache, która zastępuje wartość ustawianą w tym wierszu.httpd.conf
Poleciłbym przejrzeć - co, jak zakładam, znajduje się tutaj/etc/apache2/httpd.conf
- i sprawdzić, czy być może jest coś innegoLoadModule php5_module
, czego nie zauważyłeś lub nie zauważyłeś podczas edycji tego pliku. Patrząc na mój równoważny plik w systemie Mac OS X 10.9.5, widzę, że linia została skomentowana - ponieważ nie używam konfiguracji Mac OS X Apache / PHP - i czyta coś takiego:Oczywiście w twoim przypadku byłoby to bez komentarza. Więcej informacji na temat konfigurowania Apache i PHP do tworzenia stron internetowych można znaleźć na tej stronie .
Poważnie rozważ użycie MAMP jako alternatywy dla dziwactw Apache / PHP w Mac OS X.
Teraz wszystko to mówi: nie wiem, co próbujesz zrobić, ale jeśli robisz tworzenie stron internetowych w systemie Mac OS X, powinieneś poważnie rozważyć użycie MAMP zamiast hakowania podstawowego stosu internetowego Mac OS X, aby uzyskać różne rzeczy bieganie.
Zaletą MAMP jest to, że Mac OS X jest wyjątkowo produkcyjnym odpowiednikiem stosu LAMP. A ponieważ jest ukierunkowany na tworzenie stron internetowych w prawdziwym świecie, ma wszystkie moduły i konfiguracje ustawione dokładnie tak, jak powinno się je konfigurować.
Podstawowym problemem związanym z Apache i PHP na Mac OS X jest to, że oprogramowanie jest zwykle nieaktualne, kłopot z konfiguracją / poprawieniem i zarządzaniem oraz ból głowy przy debugowaniu, gdy coś takiego się dzieje. A jeśli pojawi się aktualizacja systemu Mac OS X, która usunie dokładnie skonfigurowane ustawienia Apache i PHP? Wróciłeś do punktu wyjścia.
źródło
Znalazłem rozwiązanie mojego problemu. Po edycji
/etc/apache2/httpd.conf
użyłem do ponownego uruchomienia apache za pomocą:Z jakiegoś powodu użycie tego polecenia Apache nie pobierał aktualizacji
httpd.conf
i nie ładował starej konfiguracji.Za pomocą:
Wykonaj rodzaj twardego restartu wszystkich usług, a także odczyta aktualizacje w pliku konfiguracyjnym i wreszcie przeczytaj nową ścieżkę dla
php5_module
:Dziękuję również @JakeGould za jego wyjaśnienie .
źródło
-k
flagę zapachectl
poleceń, ponieważ jeśliapachectl -h
zaznaczysz, że flaga / opcja tam nie istnieje. Nie mam pojęcia, skąd to masz. Ponadto, gdy deklarujesz, że robiszstop
istart
co robisz , dziwne jest to, żerestart
w systemach Linux robi to dokładnie. Jeśli sprawdzisz skrypt znajdujący się w/usr/sbin/apachectl
(jest to skrypt, więc użyj dowolnego edytora tekstu, aby wyświetlić), wydaje się, że robi to dokładnie to samo. Może w Mac OS XLaunchDaemons
dla Apache jest po prostu „dziwne” w porównaniu ze standardowym Linuksem? Tak czy inaczej, świetnie to rozwiązałeś./usr/sbin/apachectl
(bez polecenia) i to wyraźnie stwierdza[-k start|restart|graceful|graceful-stop|stop]
. Jestem tak przyzwyczajony do sposobu, w jaki Apache działa w systemach Linux, wygląda na to, że zapomniałem o-k
fladze do użycia zapachectl
poleceniami. Wiedząc więc, że prawdziwym problemem, jaki miałeś, jest to, że próbujesz zrestartować to polecenie,sudo apachectl restart
kiedy powinno być tak-k
dodane flagisudo apachectl -k restart
.