Dlaczego migracja PHP w WordPress jest konieczna
PHP 7.4 osiągnęło koniec wsparcia (EOL) już w listopadzie 2022 roku. Oznacza to brak łatek bezpieczeństwa, każda wykryta podatność pozostaje otwarta na zawsze. PHP 8.1 i 8.2 to nie tylko bezpieczeństwo, ale też realna wydajność: benchmarki pokazują, że PHP 8.x potrafi być nawet 30–50% szybsze od PHP 7.4 dzięki nowym mechanizmom JIT (Just-In-Time compilation) i zoptymalizowanemu zarządzaniu pamięcią. WordPress sam w sobie od wersji 6.x jest w pełni kompatybilny z PHP 8.1 i 8.2, więc hamulcem są wyłącznie wtyczki i motywy.
Co się psuje podczas migracji PHP, najczęstsze przyczyny problemów
PHP 8 wprowadza szereg zmian, które łamią wsteczną kompatybilność ze starszym kodem. Oto co napotykam najczęściej:
Usunięte i zmienione funkcje
create_function(), usunięta w PHP 8.0; zastąp anonimową funkcjąfunction() {}.each(), usunięta w PHP 8.0; zamień naforeach.- Przekazywanie wartości przez referencję do funkcji, które tego nie oczekują, teraz rzuca
Fatal errorzamiast ostrzeżenia. - Operatory niezdefiniowanego zachowania przy porównywaniu typów (
0 == "foo"zwraca terazfalsezamiasttrue), popularny źródłem ukrytych bugów w starszych wtyczkach.
Deprecjacje, które stają się błędami krytycznymi
W PHP 7.x wiele rzeczy generowało tylko ostrzeżenie (E_DEPRECATED), które można było zignorować. W PHP 8.0 część tych ostrzeżeń awansowała do rangi Fatal error, strona pada bez żadnego komunikatu dla użytkownika, pojawia się klasyczny błąd 500 WordPress lub biały ekran.
Niekompatybilne wtyczki i motyw
To najczęstsze źródło problemów. Wtyczki niewspierane lub dawno nieaktualizowane korzystają ze starych wzorców kodu PHP. Sprawdź szczególnie:
- Wtyczki do formularzy (starsze wersje Contact Form 7, Gravity Forms),
- Wtyczki do WooCommerce, zwłaszcza płatności i stare rozszerzenia,
- Motywy premium kupione kilka lat temu i nieaktualizowane od wersji,
- Wtyczki do cache (W3 Total Cache, WP Super Cache w starszych wersjach).
Checklist migracji PHP w WordPress, krok po kroku
Poniższy schemat stosuję przy każdej migracji. Nie pomijaj kolejności, każdy krok ma znaczenie.
- Audyt wtyczek i motywu. Zainstaluj wtyczkę PHP Compatibility Checker (bezpłatna, dostępna w repozytorium WordPress.org). Uruchom skan pod PHP 8.1 lub 8.2. Zapisz listę wtyczek z ostrzeżeniami, to Twoja lista do sprawdzenia.
- Aktualizuj wszystko do najnowszych wersji. Zanim zmienisz PHP, zaktualizuj WordPress, wszystkie wtyczki i motyw. Nowsze wersje często mają poprawki kompatybilności z PHP 8.
- Utwórz pełną kopię zapasową. Baza danych + pliki. Użyj np. UpdraftPlus lub pobierz ręcznie przez FTP i phpMyAdmin. Bez kopii nie ruszasz dalej.
- Przetestuj na środowisku staging. Jeśli masz dostęp do stagingu (home.pl, cyber_Folks i Zenbox umożliwiają to w panelu), sklonuj stronę i tam zmień wersję PHP. Sprawdź stronę główną, podstrony, formularz kontaktowy, koszyk WooCommerce (jeśli dotyczy).
-
Włącz WP_DEBUG przed zmianą na produkcji. W pliku
wp-config.phpustaw:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Ostatnia linia sprawia, że błędy trafiają do logu, a nie na ekran użytkownika. - Zmień wersję PHP w panelu hostingu. W home.pl, cyber_Folks, LH.pl, Hostinger czy Zenbox znajdziesz to w sekcji „PHP" lub „Konfiguracja serwera". Wybierz PHP 8.1 lub 8.2.
-
Natychmiast sprawdź stronę. Otwórz ją w przeglądarce, zajrzyj do
wp-content/debug.log. KażdyFatal errorwskazuje konkretny plik i numer linii. -
Dezaktywuj problematyczne wtyczki. Jeśli coś nie działa, dezaktywuj wtyczki jeden po jednym (możesz to zrobić przez FTP, zmieniając nazwę folderu wtyczki w
wp-content/plugins/). Znajdź winowajcę, poszukaj aktualizacji lub zamiennika. - Rollback jeśli trzeba. Zmiana wersji PHP w panelu hostingu jest odwracalna, wróć do PHP 7.4, napraw problem na spokojnie, a potem ponów migrację.
Jak czytać błędy PHP po migracji
Logi PHP wyglądają groźnie, ale są czytelne. Przykładowy wpis w debug.log:
[15-Jun-2025 10:22:31 UTC] PHP Fatal error: Uncaught TypeError: Argument 1 passed to MyPlugin::process() must be of type string, null given in /home/user/public_html/wp-content/plugins/my-plugin/class-core.php on line 214
Czytaj od końca: plik (class-core.php), linia (214) i typ błędu (TypeError, przekazano null zamiast string). Nazwa pliku wskazuje wtyczkę bezpośrednio. Jeśli widzisz Deprecated zamiast Fatal, to tylko ostrzeżenie, strona działa, ale warto je naprawić.
Jeśli chcesz zlecić profesjonalną aktualizację PHP w WordPress, przeprowadzę ją z pełnym testem kompatybilności i kopią bezpieczeństwa. W razie problemów po migracji oferuję też naprawę błędów WordPress, diagnostykę i przywrócenie działania strony.
Kiedy lepiej zadzwonić do specjalisty
Migracja PHP jest bezpieczna, gdy masz staging i dobrą kopię zapasową. Zadzwoń do mnie, gdy: nie masz dostępu do stagingu, Twój sklep WooCommerce nie może mieć nawet godziny przestoju, po zmianie PHP strona przestała działać i nie wiesz, jak wrócić do poprzedniej wersji, albo widzisz błędy w logach, ale nie wiesz, jak je naprawić. Dzwoniąc pod 577 020 415 zyskujesz bezpłatną diagnozę i spokój, zajmuję się migracją PHP w WordPress regularnie i wiem, gdzie najczęściej czają się pułapki.