Rozdział 14 · 14.6
Błędy po aktualizacji PHP i znajdowanie logu błędów
Zwiększyli Państwo wersję PHP i teraz Państwa witryna jest biała, wyświetla komunikat o błędzie, albo część funkcji przestała działać. Niemal zawsze przyczyną jest wtyczka, motyw lub własny kod, który nie jest dostosowany do nowej wersji. Bez paniki: w minutę przywrócą Państwo poprzednią wersję, a następnie w spokoju sprawdzą, co jest nie tak.
Krok 1: przywróć poprzednią wersję
Proszę przejść do Select PHP version, wybrać ponownie wersję, która była ustawiona wcześniej, i kliknąć Apply (patrz Wybór wersji PHP (Select PHP version)). Witryna od razu zacznie działać tak jak wcześniej. Jeśli przy nowej wersji zmienili Państwo rozszerzenia lub opcje, pozostaną one zapisane na potrzeby kolejnej próby.
Krok 2: znajdź komunikat o błędzie w logu błędów
PHP zapisuje błędy w logu błędów Państwa domeny. Znajdą tam Państwo dokładnie, który plik i która linia powodują problem.
- W DirectAdmin, w sekcji Informacje o systemie i Pliki, proszę kliknąć Podsumowanie witryny i Logi.
- Przy swojej domenie proszę kliknąć Logi błędów.
- Proszę spojrzeć na ostatnie linie, na dole. Proszę szukać linii z PHP Fatal error, PHP Parse error lub PHP Warning (1).

Więcej o logach mogą Państwo przeczytać w Podsumowanie witryny i logi: log błędów i log dostępu.
Krok 3: zrozum komunikat
W komunikacie podana jest ścieżka do pliku. Zwykle pozwala ona rozpoznać, która wtyczka lub motyw są winowajcą. Kilka przykładów:
| Widzą Państwo w komunikacie | Znaczenie |
|---|---|
| .../wp-content/plugins/nazwa-wtyczki/... | Ta wtyczka nie działa z nową wersją. Proszę ją zaktualizować lub poszukać zamiennika, jeśli nie jest już rozwijana. |
| .../wp-content/themes/nazwa-motywu/... | Państwa motyw jest zbyt stary. Proszę go zaktualizować lub poprosić autora o aktualizację. |
| Call to undefined function mysql_connect() | Bardzo stary kod, który wciąż korzysta z funkcji sprzed PHP 7. Taki kod trzeba przepisać. |
| Call to undefined function z inną nazwą funkcji | Często brakuje rozszerzenia. Proszę sprawdzić, które rozszerzenie odpowiada tej funkcji, i je włączyć (patrz Włączanie i wyłączanie rozszerzeń PHP). |
| Allowed memory size of ... bytes exhausted | Skrypt ma za mało pamięci. Proszę zwiększyć memory_limit (patrz Opcje PHP: upload_max_filesize, memory_limit i max_execution_time). |
| Maximum execution time of ... seconds exceeded | Skrypt wykonywał się zbyt długo. Proszę zwiększyć max_execution_time albo sprawdzić, dlaczego działa tak wolno. |
Krok 4: aktualizacja i ponowna próba
- Proszę wykonać kopię zapasową (patrz Kopia zapasowa i przywracanie: samodzielne tworzenie kopii zapasowej w DirectAdmin).
- Proszę zaktualizować WordPress (lub inne oprogramowanie), motyw oraz wszystkie wtyczki, podczas gdy nadal aktywna jest poprzednia wersja PHP.
- Proszę usunąć wtyczki, których Państwo nie używają.
- Proszę ponownie włączyć nową wersję PHP i przetestować witrynę jeszcze raz. Proszę też ponownie sprawdzić log błędów.
Wskazówka: Chcą Państwo najpierw przetestować zmiany bez wpływu na odwiedzających? Proszę za pomocą Installatron utworzyć kopię swojej witryny na subdomenie (patrz Klonowanie i tworzenie środowiska testowego (staging)) i ustawić nową wersję PHP tylko dla tego folderu za pomocą pliku .htaccess (patrz Ustawienia PHP dla poszczególnych katalogów i przez .htaccess).
Tymczasowe wyświetlanie błędów na stronie
Widzą Państwo tylko biały ekran, a w logu błędów nie ma nic przydatnego? Wtedy można tymczasowo wyświetlić błędy bezpośrednio na stronie. Proszę w Select PHP version, na karcie Options, zaznaczyć opcję display_errors. Proszę ponownie otworzyć stronę: teraz zobaczą Państwo komunikat o błędzie. Po zakończeniu proszę od razu wyłączyć display_errors, ponieważ taki komunikat może ujawniać informacje o Państwa witrynie każdemu odwiedzającemu.
Jeśli korzystają Państwo z WordPress, można to zrobić również za pomocą następujących linii w pliku wp-config.php, umieszczonych przed linią That's all, stop editing!: define('WP_DEBUG', true); oraz define('WP_DEBUG_LOG', true);. WordPress zapisze wtedy błędy w pliku wp-content/debug.log. Po zakończeniu proszę je usunąć lub ustawić wartość na false.
Wolą Państwo zlecić rozwiązanie problemu?
Nie udaje się Państwu to zrobić, albo Państwa witryna od lat nie była aktualizowana? Dzięki usłudze aktualizacji PHP dostosujemy Państwa witrynę do aktualnej wersji PHP, za stałą cenę. Jeśli się to nie uda, otrzymają Państwo zwrot pieniędzy.
