Jak naprawić błąd 'Maximum execution time exceeded' w WordPressie
Błąd 'Maximum execution time exceeded' (pełny komunikat to zwykle 'Fatal error: Maximum execution time of 30 seconds exceeded') oznacza, że PHP przerwało wykonywanie skryptu, ponieważ przekroczył on limit czasu ustawiony w konfiguracji serwera - parametr max_execution_time. W WordPressie ten błąd widać najczęściej jako pustą, białą stronę albo właśnie ten konkretny komunikat, i pojawia się zwykle przy operacjach trwających dłużej niż standardowe 30 sekund: import dużego pliku z danymi, generowanie PDF-a, instalacja lub aktualizacja obszernej wtyczki czy motywu, wykonywanie backupu całej strony albo wolne zapytanie do bazy danych, które się zawiesza. Ten poradnik pokazuje, jak znaleźć operację odpowiedzialną za błąd i jak krok po kroku zwiększyć limit czasu wykonania PHP - zaczynając od metod uniwersalnych, a kończąc na tej, która działa niezawodnie na hostingu współdzielonym.
- Zanotuj dokładnie, przy jakiej operacji błąd się pojawia - na przykład podczas importu danych (np. WooCommerce, WP All Import), generowania backupu, instalacji wtyczki lub motywu, albo ładowania konkretnej podstrony. To ważne, bo od tego zależy, czy wystarczy zwiększyć limit czasu, czy lepiej podzielić operację na mniejsze partie.
- Sprawdź aktualny limit
max_execution_time- wejdź w WordPressie w Narzędzia → Zdrowie strony → zakładka Informacje → sekcja Serwer, gdzie wartość tego parametru jest widoczna w sekundach. Alternatywnie wgraj przez FTP tymczasowy plikinfo.phpz zawartością<?php phpinfo(); ?>, otwórz go w przeglądarce, odszukaj wierszmax_execution_time, a następnie natychmiast usuń plik z serwera - pozostawiony plik phpinfo to ryzyko bezpieczeństwa. - Spróbuj zwiększyć limit przez
wp-config.php- dodaj na początku pliku, zaraz po otwierającym tagu<?php, linięset_time_limit(300);(liczba to limit w sekundach). Ta metoda działa tylko wtedy, gdy funkcjaset_time_limit()nie jest wyłączona po stronie serwera - część hostingów ją blokuje, więc jeśli błąd nie ustąpi, przejdź do kolejnego kroku. - Jeśli poprzedni krok nie pomógł, zwiększ limit przez plik konfiguracyjny PHP. Na serwerach działających w trybie mod_php dodaj do pliku
.htaccessw katalogu głównym WordPressa linięphp_value max_execution_time 300. Jeśli hosting korzysta z PHP-FPM, ta linia w.htaccessnie zadziała (czasem nawet wywoła błąd 500) - wtedy utwórz w tym samym katalogu plikphp.inialbo.user.iniz zawartościąmax_execution_time = 300. - Zwiększ limit w panelu hostingowym - to najpewniejsza metoda na hostingu współdzielonym, bo nadpisuje ustawienia z poprzednich kroków. W cPanel szukaj sekcji 'MultiPHP INI Editor' lub 'Select PHP Version' → 'Options', w DirectAdmin 'PHP Selector', a w autorskich panelach polskich hostingów - zakładek typu 'Wersja PHP' albo 'Ustawienia PHP'. Znajdź pole
max_execution_time, wpisz wyższą wartość (np. 300) i zapisz zmiany. - Jeśli po zmianie w panelu błąd nadal występuje, hosting najpewniej ma sztywny, globalny limit niezależny od ustawień konta (na współdzielonych serwerach to często 30-60 sekund, ustawione tak, żeby jeden skrypt nie obciążał serwera dla innych klientów). W takiej sytuacji napisz do supportu hostingu z prośbą o podniesienie limitu dla Twojego konta, albo - jeśli to możliwe - podziel operację na mniejsze partie (np. import danych w kilku mniejszych plikach zamiast jednego dużego) lub wykonaj ją przez WP-CLI po SSH, które działa jako osobny proces PHP w linii komend i ma zwykle inny, często znacznie wyższy limit czasu niż PHP-FPM lub Apache obsługujące stronę w przeglądarce.
- Zweryfikuj, czy zmiana zadziałała - powtórz operację, która wcześniej powodowała błąd, i sprawdź, czy kończy się bez przerwania. Dodatkowo wróć do Zdrowia strony w WordPressie i potwierdź, że wartość
max_execution_timefaktycznie się zmieniła - to pokaże, czy ustawienie z wybranego kroku zostało zastosowane, czy zostało nadpisane przez konfigurację serwera o wyższym priorytecie.
Co zrobić, gdy coś pójdzie nie tak
Przy tej zmianie najczęściej pojawiają się trzy problemy:
- Zmiana w .htaccess nic nie daje. Najczęstsza przyczyna to PHP działające w trybie PHP-FPM, a nie mod_php - wtedy wpisy
php_valuew.htaccesssą ignorowane albo powodują błąd 500 przy wejściu na stronę. Usuń taki wpis z.htaccessi zamiast niego użyj pliku.user.iniz kroku 4, albo od razu przejdź do ustawienia limitu w panelu hostingowym z kroku 5. - Błąd wraca mimo ustawienia wysokiego limitu w panelu. To znak, że hosting ma sztywny, globalny limit na koncie współdzielonym, którego nie można podnieść przez ustawienia użytkownika - chroni on innych klientów na tym samym serwerze. Jedyne sensowne wyjście to kontakt z supportem hostingu albo rozbicie operacji na mniejsze partie lub przeniesienie jej do WP-CLI, jak w kroku 6.
- Błąd pojawia się tylko podczas pracy jednej konkretnej wtyczki, a inne długie operacje (np. backup) przebiegają normalnie. To sygnał, że problem nie leży w limicie serwera, a w nieefektywnym kodzie tej wtyczki - na przykład wykonuje ona zapytania do bazy w pętli bez żadnego ograniczenia. W takim przypadku dalsze zwiększanie limitu czasu tylko odsuwa problem w czasie; zgłoś błąd autorowi wtyczki albo sprawdź, czy jest dostępna nowsza, poprawiona wersja.
Od 2014 roku prowadzi SP-Media - agencję, która buduje i utrzymuje strony firmowe. Hostingi ocenia z perspektywy kogoś, kto codziennie na nich pracuje: migracje, awarie, kontakt z supportem.