Krótsza odpowiedź.
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ą.
W rzeczywistości możesz kompilować i ładować różne wersje PHP, które chcesz współpracować z Apache, pod warunkiem, że dostosujesz Apache do poprawnego ładowania. Interfejs wiersza poleceń PHP nigdy nie wejdzie w grę w przypadku analizowania stron PHP przez Apache.
Wersja PHP wiersza polecenia jest dostępna tylko dla zadań specyficznych dla wiersza poleceń, a moduł PHP dla Apache nigdy go nie dotknie, nie użyje ani nie będzie mu potrzebny.
Dłuższa odpowiedź.
Ty to mówisz:
Chciałem wiedzieć, której php
wersji używam, więc napisałem standardowy skrypt:
phpinfo();
Co daje mi wersję PHP 5.6.10 - odpowiednią wersję PHP potrzebną do mojej aplikacji. Kiedy próbowałem w terminalu:
php -i or php -v
Pokazuje mi PHP w wersji 5.3.2, której nie potrzebuję.
Wersja PHP dostępna z wiersza poleceń nie ma 100% nic wspólnego z wersją PHP ładowaną jako moduł. To są całkowicie oddzielne rzeczy.
Jeśli więc phpinfo()
obawiasz się, której wersji PHP używa Twoja aplikacja internetowa, jeśli pokazuje wersję 5.6.10 i to, czego chcesz / potrzebujesz, jest w 100% w porządku.
Wersja PHP wiersza poleceń jest całkowicie oddzielnym elementem systemu. Jedyne, co się liczy, to wynik phpinfo()
.
Jeśli z jakiegoś powodu chciałeś użyć innej wersji PHP z Apache, wszystko co musisz zrobić, to zainstalować gdzieś skompilowany moduł PHP Apache i dodać - lub dostosować - ten wiersz w konfiguracji Apache w twoim systemie:
LoadModule php5_module /path/to/php/and/the/module/for/apache2/libphp5.so
I po prostu dostosuj ścieżkę do libphp5.so
- tego, czego używa Apache do analizowania PHP - a następnie uruchom ponownie Apache i zaczniesz działać.
Na przykład w pewnym momencie musiałem skompilować PHP w wersji 5.1.6 ze źródła (z obsługą biblioteki GD) do użycia na maszynie Ubuntu 12.04 z PHP 5.3.5. W module PHP serwera ładującego plik tutaj:
/etc/apache2/mods-available/php5.load
Miałem takie linie:
# LoadModule php5_module /usr/lib/apache2/modules/libphp535.so
LoadModule php5_module /usr/lib/apache2/modules/libphp516-gd.so
Zauważ, jak jedna linia jest komentowana, libphp535.so
a druga nie jest komentowana libphp516-gd.so
? Zmieniłem nazwę domyślnego libphp5.so
modułu Apache PHP 5.3.5 libphp535.so
na numer wersji w nazwie, więc mogłem go tam znaleźć w celach informacyjnych, a następnie nazwałem moduł PHP 5.1.6 (z obsługą biblioteki GD), libphp516-gd.so
więc wiem, co to jest również. W ten sposób mam oba dostępne obok siebie w systemie.
I - jak powiedziałem na wstępie - wersja PHP używana w wierszu poleceń nie ma absolutnie nic wspólnego z modułem Apache PHP. Możesz mieć gotową do pracy dowolną liczbę różnych wersji modułów Apache PHP; po prostu dostosuj konfigurację i zrestartuj Apache, a powinieneś być w biznesie, aby używać dowolnej wersji PHP, którą określisz Apache.
Jeśli próbujesz uruchomić kod PHP z serwera WWW, wówczas używana wersja to wersja zgłoszona przez
phpinfo()
= 5.6.10 .Na twoim serwerze najwyraźniej zainstalowano wiele wersji PHP, a kiedy logujesz się i uruchamiasz
php
w wierszu poleceń, otrzymujesz starszą wersję, która jest zainstalowana na / usr / bin / php.Serwer może mieć wiele wersji PHP, a Twoja wydaje się, że tak.
Jeśli musisz ręcznie uruchomić to samo PHP co serwer WWW, musisz znaleźć inną wersję. Spróbuj uruchomić następujące polecenia:
Jedna z nich może ujawnić PHP w tej samej wersji co twój serwer WWW, a kiedy zorientujesz się, która to jest, możesz użyć tej zamiast domyślnej.
źródło
Jeśli mogę dodać moje 2 centy ...
Aktualizowałem moją wersję Nextcloud. Kiedy uruchamiam procedurę aktualizacji, muszę „sudo php” jako użytkownik apache, ale odmówił uruchomienia, ponieważ wersja CLI php jest domyślnie uruchamiana przez użytkownika apache. Jednak phpinfo (); na moim serwerze wyświetlono najnowszą zainstalowaną wersję php.
Uświadomiłem sobie, że dzieje się tak, ponieważ zmienna PATH w pliku /home/apache/.bashrc została ustawiona na pierwszą wersję php zainstalowaną na moim serwerze i nigdy nie była aktualizowana ponownie (zawsze kompiluję / instaluję php ze źródła na Github )
Rozwiązanie:
Kiedy aktualizujesz php na swoim serwerze internetowym i chcesz się upewnić, że używana wersja CLI php jest najbardziej aktualna podczas sudo jako użytkownik apache, nie zapomnij zmienić go w pliku .bashrc tego użytkownika, jak poniżej:
PATH=$PATH:/var/www/html: /usr/local/php7.1.32/bin export PATH
źródło
Kroki, aby to naprawić. Przede wszystkim, którą wersję PHP pokazuje.
Teraz potrzebujesz ścieżki PHP. Jeśli nie wiesz, możesz skontaktować się ze wsparciem hostingowym dla ścieżki PHP. W moim przypadku tak było
Teraz nadszedł czas, aby uruchomić to polecenie w terminalu.
Spowoduje to zmianę wersji PHP na PHP 7.1. Jeśli chcesz zmienić wersję na 7.2, możesz spróbować
Gotowe. Sprawdź to za pomocą
źródło
Utwórz ścieżkę zmiennej środowiskowej dla najnowszej wersji php np: C: \ wamp64 \ bin \ php \ php7.2.4 Teraz zmień folder poprzedniej wersji php .php5.6.35 na inny numer php5.6.354 .. Następnie sprawdź php -v twój wamp serwer i cli php będą takie same
źródło