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.
Wolisz, żeby zrobił to ktoś za Ciebie? Zaktualizuję PHP na Twojej stronie →
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”.
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.
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.
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
Wycena jest bezpłatna i do niczego nie zobowiązuje.