Przełączanie pomiędzy wersjami PHP

Standardowo po wpisaniu w terminalu komendy sprawdzającej wersje PHP widzimy czasem zupełnie coś innego niż w phpinfo, gdy tworzymy pusty plik php. Oto jak zmienić wersje. Sprawdzamy najpierw:

php -v

Widzimy wersję, która jest obecnie zainstalowana, ale nie jest to równoznaczne z tym, która jest włączona jako interpreter w obecnej wersji apache, gdyż w pliku konfiguracyjnym apache2.conf lub httpd.conf (zależnie od wersji systemu i instalacji) może być narzucony interpreter o różnej wersji i pomimo, że mamy pod wyżej wymienioną komendą wyświetloną wersje PHP 7.2.xx to wcale nie jest powiedziane, że taka wersja jest używana przez apache. To jest wersja, do której utworzyliśmy skrót w samym systemie i przykładowo jeśli w naszej aplikacji użyjemy komendy

composer install

Wówczas użyta przez composer wersja PHP będzie ta, którą mamy pod komendą php -v, ponieważ utworzyliśmy, lub automatycznie sam utworzył się tak zwany symlink do odpowiedniego katalogu i pliku wykonywalnego. W tym wpisie powiem w jaki sposób zmienić wykrywaną wersję php przez system, w apache to jest proste ponieważ w pliku konfiguracyjnym wystarczy, że zakomentujemy odpowiedni moduł php i odkomentujemy ten, który chcemy aby był interpreterem w naszych aplikacjach WWW. Po tym restartujemy apache i gotowe.

Aby przełączyć wykrywaną wersje php po wpisaniu komendy php -v

Wpisujemy kolejno:

which php

Teraz wiemy, gdzie znajduje się plik wykonywalny i powinien on być w:

/usr/bin/php

Tylko że po wpisaniu which cokolwiek, zawsze to będzie /usr/bin/cokolwiek

Wpisujemy:

ls -l /usr/bin/php

I teraz ukaże się nam coś w stylu:

/usr/bin/php -> /etc/alternatives/php

Dzięki temu, wiemy, że ta ścieżka odnosi się do tej po prawej stronie i właśnie tam tak na prawdę znajduje się ten plik wykonywalny PHP, ale lecimy dalej:

cd /etc/alternatives/

Przechodzimy do tego katalogu i wpisujemy

ls -lart php

Teraz pokazuje się nam dokładna ścieżka:

php -> /usr/bin/php5.6

W tym katalogu mamy nasze php które jest umiejscowione w systemie również w /usr/bin/php

Sprawdźmy czy istnieje jeszcze jakaś wersja php w tym systemie:

ls -l /usr/bin/php*

Załóżmy że mamy zainstalowany właśnie php w wersji 5.6 i 7.2 wtedy powinien nam się pokazać również katalog

/usr/bin/php7.2

Zatem z katalogu /etc/alternatives/ wykonujemy komendę:

rm -f php && ln -s /usr/bin/php7.2 php

Powyższa komenda wymusi usunięcie symlinka do php i utworzy nowy do katalogu php7.2, który będziemy mogli używać normalnie komendą

php -v

Sprawdzamy rezultat:

# ls -lart php
php -> /usr/bin/php7.2

Teraz mamy zmienioną wersję PHP w systemie. Powyższa krótka i może nie do końca dokładna instrukcja dotyczy przełączania natywnej wersji PHP, która ma być używana przez sam system, gdy na przykład korzystamy z composer’a lub innego narzędzia PHP. To działa również w obie strony. Możemy zamiast z wersji 7.2 przełączać na 5.6.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *