Disclaimer:
Należy pamiętać, że korzystając z przestarzałego PHP narażamy bezpieczeństwo naszego serwera.
Moja infrastruktura i skrypty pamiętają jeszcze piękne czasy (Ale piękne tylko pod względem informatycznego chcenia mi się) lat 2017 2019 to trzeba naprawić też PHP, które nie odpala mi tego co działało przed aktualizacjami.
Jak więc to zrobić?
Najpierw warto sprawdzić, jaką mamy teraz wersję tegoż i przygotować sobie ogólnie plik phpinfo w razie konieczności posiadania większej ilości informacji:
Możemy go stworzyć w dowolnym edytorze i wrzucić na ftp, albo też wykreować prosto z samego Win scp lub przez nano w terminalu.
Tym ostatnim robimy to w ten sposób:
„cd nasza-nazwa-katalogu-z-plikami-dostepnymi-przez-www”
Gdy jesteśmy już w odpowiedniej lokalizacji teraz należy napisać np.:
„nano info.php”
po otworzeniu się pliku wkleić poniższe
Teraz wystarczy nacisnąć CTRL+X i potwierdzić literką Y utworzenie nowego dokumentu.
Wchodzimy pod adres w przeglądarce. W nowszych wersjach PHP np. z gałęzi 8, informacja wyświetla nam się już w tytule strony.
No więc. Mam ja stare CMSy i inne fajne rzeczy z epoki kamienia łupanego i jak to teraz ruszyć, jak php się rzuca? Dostawałem zwrotkę Error 500, bo strona nie mogła przetworzyć mojego żądania. W logach odkryłem iż pewne sposoby kodowania zostały wyeliminowane w nowszych wersjach PHP. Ale łatwiej jest chyba zrobić downgrade, niż przerabiać wszystkie (Swoją drogą nie moje) skrypty.
Trzeba więc zmienić wersję.
W tym celu, napisałem po prostu
„apt-get install php7.4”
Na co Linux odparł:
„Package php7.4 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package 'php7.4′ has no installation candidate.”
Oznacza to mniej więcej tyle, że potrzebujemy zewnętrznego repozytorium.
nalazłem takie w Tym artykule.
Poniżej przeklejam komendy, które należy wykonać z osobna, każdą po kolei aby dodać je do swojej listy:
„apt install -y apt-transport-https lsb-release ca-certificates wget
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo „deb https://packages.sury.org/php/ $(lsb_release -sc) main” | sudo tee /etc/apt/sources.list.d/php.list ”
Teraz standardowa procedura aktualizacji systemu:
„apt-get update”
Można już instalować wersję PHP, która nam się przyda.
„apt get-install -y php7.4”
Teraz przy pomocy polecenia:
„update-alternatives –set php /usr/bin/php7.4”
dodajemy manualnie obecnie zainstalowaną wersję do listy alternatyw ustawiając ją jako domyślną.
I można by było pomyśleć, że gotowe!
Tak łatwo nie ma. Nie wierzysz? Sprawdź sobie utworzony wcześniej plik info.php.
Zdziwiony? Co prawda komenda
„php -v ”
zwróci nam informację, iż teoretycznie wybrane obecnie jest 7.4, ale w praktyce Nadal będzie 8.x, gdyż należy jeszcze zmienić pewne rzeczy po stronie Apache.
Sprawdźmy najpierw, czy wszystko poprawnie się zainstalowało.
W tym celu przejdźmy do katalogu
„/etc/apache2/mods-available”
i znajdźmy pliki:
„php7.4.load”
oraz
„php7.4.conf”
Jeśli są obecne, mamy już 90 procent sukcesu.
Ostatnim krokiem jest deaktywacja obecnego modułu i aktywacja wersji poprzedniej.
W tym celu wpisujemy po prostu:
„a2enmod php7.4
a2dismod php8.2”
i restartujemy serwer www
„systemctl restart apache2”
Wszystko powinno teraz zadziałać poprawnie.
Otwórzmy jeszcze raz info.php w przeglądarce. Odświeżmy stronę i sprawdźmy co nam się wyświetli.
Jeśli wszystko poszło zgodnie z planem, a jest to niższa wersja niż 7.3 w tytule okna zobaczymy tylko „phpinfo()”, natomiast w treści niżej znajdziemy to co i w nowszych wersjach w tym przypadku
„PHP Version 7.4.33”
Gotowe. Nasze stare skrypty znowu będą działać, a my oszczędzimy sobie czasu na przepisywanie cudzesów.