PHP

Migracja PHP 7.4 do 8.5 w WordPress, co może pójść nie tak

PHP 7.4 od dawna nie dostaje poprawek bezpieczeństwa, a hostingi coraz częściej wymuszają przejście na nowsze wersje. Skok z 7.4 prosto na 8.5 daje szybszą i bezpieczniejszą stronę – ale bez przygotowania potrafi ją też wyłączyć. Oto, na co uważać i jak przejść przez to bez stresu.

  • 9 min czytania
  • Alan Adamczyk

Najważniejsze w 30 sekund

  • Najpierw kopia zapasowa i aktualizacja wtyczek, motywu i WordPressa – dopiero potem zmiana PHP.
  • Nie skacz od razu na 8.5. Przechodź etapami: 7.4 → 8.1 → 8.3 → 8.5 i testuj po każdym kroku.
  • Najczęściej psują się stare, porzucone wtyczki i własny kod w functions.php.
  • Coś nie działa? Wróć do poprzedniej wersji PHP w panelu hostingu i poszukaj winowajcy w pliku debug.log.

2022

ostatnia poprawka bezpieczeństwa dla PHP 7.4

4

etapy: 7.4 → 8.1 → 8.3 → 8.5

6

prostych kroków całej migracji

1 klik

powrót do starego PHP, gdy coś nie działa

Dlaczego warto przejść na PHP 8.5

PHP to język, w którym działa WordPress – rdzeń, każda wtyczka i motyw. Nowsze wersje PHP wykonują ten sam kod szybciej, więc strona szybciej się generuje, a serwer obsłuży więcej odwiedzających naraz. Do tego nowe wersje WordPressa i wtyczek coraz częściej wymagają PHP 8, a sam WordPress zaleca PHP 8.3 lub nowsze.

Zostając na 7.4, ryzykujesz dwie rzeczy: niezałatane luki bezpieczeństwa (jak niedawne PHP2Shell) i to, że hosting któregoś dnia sam podniesie wersję – bez ostrzeżenia i bez testu.

Sama zmiana PHP rzadko psuje stronę. Psują ją stare wtyczki, których nikt nie zaktualizował przed zmianą.

Cały proces w 6 krokach

Tak wygląda bezpieczna migracja. Każdy krok opisuję niżej dokładniej – z przykładami, gdzie kliknąć i na co patrzeć.

1

Sprawdź obecną wersję PHP

W kokpicie WordPressa, w Zdrowiu witryny. Zajmie Ci minutę.

2

Zrób pełną kopię zapasową

Pliki i baza danych – to Twój bilet powrotny.

3

Zaktualizuj wtyczki, motyw i WordPressa

Jeszcze na starym PHP. Nowe wersje dodatków są zwykle zgodne z PHP 8.

4

Przetestuj na kopii strony

Na stagingu lub klonie strony zmieniasz PHP w pierwszej kolejności.

5

Zmień PHP etapami

7.4 → 8.1 → 8.3 → 8.5 – z testem po każdym kroku.

6

Sprawdź stronę i log błędów

Kluczowe podstrony, formularze, sklep i plik debug.log.

Krok 1: Sprawdź, jakiej wersji PHP używasz

W kokpicie WordPressa wejdź w Narzędzia → Zdrowie witryny → Informacje i rozwiń sekcję Serwer. Wiersz „Wersja PHP” pokazuje, na czym działa Twoja strona. Jeśli wersja jest przestarzała, WordPress ostrzeże Cię też na zakładce „Stan”.

Narzędzia → Zdrowie witryny → Informacje → Serwer w WordPressie – wiersz Wersja PHP pokazuje przestarzałe PHP 7.4.33

Ilustracja: wersja PHP w Zdrowiu witryny. Tę samą informację znajdziesz w panelu hostingu, w ustawieniach PHP domeny.

Zanotuj przy okazji „Limit pamięci PHP”. Po zmianie wersji hosting czasem wraca do ustawień domyślnych – od razu zauważysz, że limit spadł np. z 256M do 128M.

Krok 2: Zrób pełną kopię zapasową

Kopia to Twoje zabezpieczenie, gdyby coś poszło bardzo źle. Sama zmiana PHP nie rusza plików ani bazy, ale wtyczki uruchomione na nowym PHP już tak – np. gdy aktualizują swoje tabele w bazie danych.

  • Pliki – cały katalog strony, razem z wp-content.
  • Baza danych – eksport z panelu hostingu lub phpMyAdmin.
  • Kopia poza serwerem – pobrana na komputer albo do chmury.
  • Sprawdź, czy się otwiera – archiwum, którego nie da się rozpakować, to nie kopia.

Jak zrobić kopię w panelu hostingu, wtyczką albo ręcznie, opisałem w poradniku Kopia zapasowa WordPress – jak zrobić i przywrócić.

Krok 3: Zaktualizuj wszystko – jeszcze na starym PHP

Wejdź w Kokpit → Aktualizacje i zaktualizuj WordPressa, wtyczki, motyw i tłumaczenia. Autorzy dodatków zwykle dawno dostosowali je do PHP 8 – wystarczy nowa wersja. Potem przejrzyj listę wtyczek i oceń każdą z nich:

Wtyczka lub motyw

Ryzyko

Co zrobić

Aktualizowana w ostatnim roku

✓ niskie

✓ zostaw

Bez aktualizacji od 2+ lat

! średnie

! szukaj zamiennika

Usunięta z WordPress.org

✕ wysokie

✕ wymień przed migracją

Własny kod w functions.php

! średnie

! przejrzyj przed zmianą

Datę ostatniej aktualizacji wtyczki zobaczysz na jej stronie w katalogu WordPress.org, w polu „Ostatnia aktualizacja”.

Krok 4: Przetestuj zmianę na kopii strony

Kopia testowa (staging) to klon Twojej strony pod innym adresem. Zmieniasz na niej PHP i przeklikujesz stronę – jeśli coś się zepsuje, klienci tego nie zobaczą. Dwa najprostsze sposoby:

Klon w panelu hostingu

W Zenbox użyjesz Installatrona: sklonuj instalację WordPressa na subdomenę testową, np. test.twoja-domena.pl, i tam zmień PHP.

Kopia na komputerze

Darmowy program Local uruchomi kopię strony na Twoim komputerze i pozwoli przełączać wersje PHP jednym kliknięciem.

Kopia sklepu potrafi wysyłać prawdziwe maile. Na stagingu przełącz płatności w tryb testowy i wyłącz e-maile do klientów, zanim złożysz zamówienie próbne.

Nie masz czasu na staging i testy?

Przeprowadzę migrację PHP za Ciebie: sprawdzę wtyczki, przetestuję wszystko na kopii strony i przełączę żywą stronę z planem powrotu. Wycena jest bezpłatna.

Zapytaj o aktualizację PHP  →

Krok 5: Zmień wersję PHP – etapami

Wersję PHP zmieniasz w panelu hostingu, w ustawieniach PHP domeny. Zmiana działa od razu i w każdej chwili możesz ją cofnąć. Nie przeskakuj jednak od razu na 8.5 – przechodź etapami. Gdy coś się zepsuje, od razu wiesz, na której wersji.

Zmiana wersji PHP w panelu hostingu – wybór PHP 8.1 jako pierwszego etapu migracji z PHP 7.4 do 8.5

Ilustracja: wybór wersji PHP w panelu hostingu. Nazwy menu różnią się między hostingami – szukaj „Wersja PHP” lub „Ustawienia PHP”.

Co zmienia się na każdym etapie

7.4 → 8.1

Największy skok. PHP 8 usunął stare funkcje (np. create_function() i each()), a błędy typów kończą się błędem krytycznym zamiast ostrzeżenia. Tu psuje się najwięcej.

8.1 → 8.3

Głównie nowe komunikaty Deprecated – np. o przekazywaniu null do funkcji PHP albo o dynamicznych właściwościach w starszych wtyczkach. Strona zwykle działa, ale log się zapełnia.

8.3 → 8.5

Kolejne przestarzałe elementy, m.in. niejawnie nullowalne parametry (8.4) i operator backtick (8.5). Przy aktualnych wtyczkach zwykle obywa się bez niespodzianek.

Po każdym etapie

Wykonaj krok 6: sprawdź kluczowe podstrony, formularze, sklep i debug.log. Dopiero potem przejdź na następną wersję.

Na każdym etapie możesz się wycofać. Jeśli po zmianie coś nie działa, przełącz PHP z powrotem na poprzednią wersję – strona wróci do działania w kilka sekund.

Krok 6: Sprawdź stronę i log błędów

Po każdej zmianie PHP przeklikaj stronę – najpierw jako odwiedzający (w oknie incognito), potem w panelu administracyjnym.

  • Strona główna, wpisy i kilka podstron – czy układ się nie rozjechał.
  • Logowanie i panel – czy wp-admin się otwiera, a edytor zapisuje zmiany.
  • Formularze – wyślij testową wiadomość i sprawdź, czy dotarła.
  • Sklep – koszyk, zamówienie testowe i e-mail z potwierdzeniem.
  • Rzeczy „w tle” – miniatury przy wgrywaniu obrazka, kopie zapasowe, import, faktury PDF.

Włącz zapisywanie błędów do pliku

Część błędów nie widać na stronie – trafiają tylko do logu. Otwórz plik wp-config.php i nad linią „That's all, stop editing!” dodaj trzy linie (jeśli WP_DEBUG już tam jest, zmień tylko jego wartość):

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

Błędy zapiszą się w pliku wp-content/debug.log, a odwiedzający ich nie zobaczą. Plik otworzysz przez Menedżer plików w panelu hostingu albo przez FTP.

Plik debug.log w WordPressie po zmianie PHP – ostrzeżenia Deprecated i Warning oraz Fatal error wskazujący wtyczkę

Ilustracja: przykładowy debug.log po zmianie PHP. Szukaj linii z „Fatal error” – folder po /plugins/ lub /themes/ wskazuje winowajcę.

Jak czytać log błędów

PHP Fatal error

Błąd krytyczny – to on wyłącza stronę albo jej część. Naprawiasz go w pierwszej kolejności.

PHP Warning

Coś działa nie tak, jak powinno, ale strona się ładuje. Warto sprawdzić, nie trzeba panikować.

PHP Deprecated

Ostrzeżenie, że kod przestanie działać w przyszłej wersji PHP. Dziś niczego nie psuje – możesz zgłosić je autorowi wtyczki.

/plugins/nazwa/

Folder w ścieżce to nazwa wtyczki (albo motywu, gdy widzisz /themes/). Tak w kilka sekund znajdziesz winowajcę.

Po testach wyłącz debugowanie. Ustaw WP_DEBUG na false i usuń plik debug.log – zawiera ścieżki serwera i fragmenty konfiguracji, których nie powinien czytać nikt obcy.

Najczęstsze problemy po zmianie PHP i jak je naprawić

Biały ekran lub „błąd krytyczny”

Najczęściej stara wtyczka z usuniętą funkcją. WordPress wyśle wtedy na e-mail administratora link do trybu odzyskiwania – zalogujesz się nim i wyłączysz winowajcę.

Błąd TypeError

Kod próbuje np. policzyć elementy czegoś, co nie jest tablicą, albo dodać tekst do liczby. Często dotyczy własnych fragmentów w functions.php – trzeba je poprawić.

Komunikaty na górze strony

Deprecated i Warning widoczne dla odwiedzających rozsypują układ. W wp-config.php ustaw WP_DEBUG_DISPLAY na false – na żywej stronie komunikaty nie mogą być widoczne.

Nie działają miniatury, PDF lub import

Nowa wersja PHP może mieć inny zestaw rozszerzeń. Brak np. intl, imagick czy zip włączysz w ustawieniach PHP w panelu hostingu.

Strona przestała działać? Nie naprawiaj jej na żywo. Przełącz PHP z powrotem na poprzednią wersję, żeby klienci znów widzieli stronę, a przyczyny szukaj spokojnie na kopii testowej. Jak znaleźć wtyczkę, która psuje stronę →

Gdy winna jest konkretna wtyczka

1

Poszukaj aktualizacji

Sprawdź, czy autor nie wydał nowej wersji. To rozwiązuje większość problemów.

2

Znajdź zamiennik

Wtyczka porzucona? Wybierz inną o tej samej funkcji – aktualizowaną w ostatnich miesiącach i z dużą liczbą aktywnych instalacji.

3

Popraw kod tylko w ostateczności

Poprawka w kodzie wtyczki zniknie przy jej następnej aktualizacji. Traktuj ją jako rozwiązanie tymczasowe, zanim znajdziesz zamiennik.

Podsumowanie

Migracja z PHP 7.4 do 8.5 to jedna z najlepszych rzeczy, które możesz zrobić dla szybkości i bezpieczeństwa strony. Ryzyko jest małe, jeśli trzymasz się kolejności:

Tak strona się psuje

  • zmiana PHP bez kopii zapasowej
  • skok z 7.4 prosto na 8.5
  • test od razu na żywej stronie
  • stare wtyczki zostawione, „bo działają”
  • komunikaty błędów widoczne dla odwiedzających

Tak przechodzisz bez stresu

  • kopia zapasowa poza serwerem
  • aktualne wtyczki, motyw i WordPress
  • test na kopii strony
  • etapy 7.4 → 8.1 → 8.3 → 8.5
  • debug.log sprawdzony po każdym kroku

Aktualizacja PHP bez przestoju

Przeprowadzę migrację PHP za Ciebie

Zajmę się całym procesem – od kopii zapasowej po ostatni test:

  • Kopia zapasowa plików i bazy przed każdą zmianą
  • Przegląd wtyczek i motywu pod kątem PHP 8
  • Test na kopii strony, zanim zmiana trafi na żywo
  • Migracja etapami do najnowszego PHP, jakie obsługuje Twoja strona
  • Naprawa lub wymiana niezgodnych wtyczek
  • Plan powrotu, gdyby coś poszło nie tak
Zapytaj o aktualizację  →

Wycena jest bezpłatna i do niczego nie zobowiązuje.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

Bezpłatna wycena

Poznaj wycenę

Opisz krótko, czego potrzebujesz – odpowiem z wyceną i terminem, zwykle w ciągu 3 godzin w dni robocze.

Na kiedy?

Wycena jest bezpłatna i do niczego nie zobowiązuje.