
⚙️ Jak naprawić błąd "Przesłany plik przekracza dyrektywę upload_max_filesize" w php.ini
Próbuje Pan/Pani wgrać motyw, wtyczkę lub obraz do biblioteki multimediów WordPress i widzi Pan/Pani czerwony komunikat: „Przekroczono wartość dyrektywy upload_max_filesize w pliku php.ini". Plik waży 10 megabajtów, a WordPress go nie przepuszcza. Znajoma sytuacja dla każdego, kto administruje stroną.
Problem nie leży ani w WordPressie, ani w Pana/Pani pliku. Dostawcy hostingu ograniczają rozmiar przesyłanych plików na poziomie PHP, a standardowy limit 2 megabajtów nie zmieniał się od lat. Może go Pan/Pani podnieść w pięć minut, korzystając z dowolnego z pięciu poniższych sposobów, od najprostszego do bardziej zaawansowanego.
💡 Szybki przegląd:
- Zwiększ limit przez wp-config.php, jedno wywołanie
ini_set, działa na większości hostingów - Zmień ustawienia w cPanelu przez MultiPHP INI Editor, jeśli host korzysta z cPanelu
- Utwórz lub edytuj php.ini przez FTP, metoda działa niezależnie od panelu sterowania
- Dodaj dyrektywy w.htaccess, gdy nie ma dostępu do php.ini
- W ostateczności wpisz
@ini_setw functions.php motywu potomnego
Skąd się bierze ograniczenie upload_max_filesize
Dyrektywa upload_max_filesize znajduje się w pliku konfiguracyjnym php.ini, głównym pliku ustawień PHP na Pana/Pani serwerze. Określa ona maksymalny rozmiar pojedynczego przesyłanego pliku. Domyślna wartość to 2 megabajty, co wystarcza na małe obrazy, ale motyw WordPress lub plik wideo w tych ramach się nie mieszczą.
Obok niej działają jeszcze dwie dyrektywy: post_max_size (całkowity rozmiar żądania POST, domyślnie 8 MB) i memory_limit (pamięć dostępna dla skryptu, domyślnie 128 MB). Wszystkie trzy są ze sobą powiązane: jeśli podniósł Pan/Pani upload_max_filesize, proszę sprawdzić, czy post_max_size jest nie mniejsze od nowej wartości, w przeciwnym razie ograniczenie pozostanie na poprzednim poziomie.
Aktualne limity można sprawdzić bezpośrednio z panelu administracyjnego WordPress: proszę przejść do Multimedia → Dodaj nowy i spojrzeć na wiersz pod obszarem przesyłania, gdzie wskazany jest maksymalny rozmiar. Alternatywnie można zainstalować wtyczkę PHP Info i znaleźć odpowiednie dyrektywy w danych wyjściowych phpinfo().
1. Zwiększ limit przez wp-config.php
Najszybszy sposób, który działa na większości hostingów współdzielonych. Plik wp-config.php znajduje się w folderze głównym witryny i jest ładowany przed wykonaniem jakiegokolwiek kodu WordPress, dlatego dyrektywy ini_set w nim zawarte mają priorytet.
Proszę połączyć się z serwerem przez klienta FTP (FileZilla, darmowa i niezawodna opcja) lub otworzyć Menedżera plików w panelu sterowania hostingu. Proszę znaleźć wp-config.php w folderze głównym (zazwyczaj public_html):

Proszę dodać następujące wiersze na końcu pliku, przed komentarzem /* That's all, stop editing! */:
1 @ini_set('upload_max_filesize', '64M'); 2 @ini_set('post_max_size', '80M'); 3 @ini_set('memory_limit', '256M'); 4 @ini_set('max_execution_time', '300');
Proszę zapisać plik i odświeżyć stronę biblioteki multimediów WordPress. Limit przesyłania powinien zmienić się na 64 megabajty. Jeśli wartość się nie zmieniła, dostawca hostingu zablokował ini_set, proszę przejść do następnego sposobu.
2. Zmień ustawienia przez MultiPHP INI Editor w cPanelu
Jeśli Pana/Pani host korzysta z cPanelu, wbudowany edytor MultiPHP INI Editor umożliwia zmianę ustawień PHP bez ręcznej pracy z plikami. Automatycznie stosuje on wartości do wybranej witryny i nadpisuje domyślne wartości hostingowe.
Proszę zalogować się do cPanelu i znaleźć sekcję Software → MultiPHP INI Editor:

Proszę wybrać odpowiednią witrynę z listy rozwijanej na górze strony. Proszę przewinąć w dół do dyrektywy upload_max_filesize i wpisać nową wartość (na przykład 64M). Poniżej proszę znaleźć post_max_size i ustawić ją nieco większą, 80M. Proszę kliknąć Apply. Zmiany wchodzą w życie natychmiast.
Ten sposób jest lepszy od pierwszego: cPanel sam pilnuje składni, a ustawienia nie resetują się po aktualizacji WordPress.
3. Edytuj php.ini przez FTP
Jeśli nie ma Pan/Pani dostępu do cPanelu lub host nie obsługuje MultiPHP INI Editor, proszę pracować bezpośrednio z plikiem php.ini. Zarządza on wszystkimi ustawieniami PHP, a zmiana w nim to najbardziej niezawodny sposób na podniesienie limitów.
Proszę połączyć się z serwerem przez FTP i przejść do folderu głównego witryny. Proszę znaleźć plik php.ini. Jeśli go nie ma (na hostingach współdzielonych użytkowniczy php.ini często jest nieobecny), proszę utworzyć nowy plik tekstowy o takiej nazwie:

Proszę dodać do pliku następujące dyrektywy:
1 upload_max_filesize = 64M 2 post_max_size = 80M 3 memory_limit = 256M 4 file_uploads = On 5 max_execution_time = 300 6 max_input_time = 300
Proszę zapisać plik. Aby zmiany zostały zastosowane, niektórzy dostawcy hostingu wymagają dyrektywy suPHP w pliku .htaccess. Proszę dodać w .htaccess blok:
1 <IfModule mod_suphp.c> 2 suPHP_ConfigPath /home/yourusername/public_html 3 </IfModule>
Proszę zastąpić yourusername nazwą użytkownika swojego konta hostingowego. Jeśli po dodaniu tego bloku witryna przestała działać z błędem, należy usunąć blok: Pana/Pani serwer pracuje na CGI i suPHP nie jest potrzebny.
Na serwerach lokalnych ścieżka do php.ini zależy od platformy: XAMPP (Windows): C:\xampp\php\php.ini; MAMP (macOS): /Applications/MAMP/conf/php/php.ini; LAMP (Linux): /etc/php/версия/apache2/php.ini. Po edycji proszę zrestartować serwer WWW.
4. Dodanie dyrektyw w.htaccess
Gdy dostawca hostingu zablokował dostęp do php.ini, a ini_set nie działa, ostatnią linią obrony na poziomie serwera jest plik .htaccess. Pozwala on ustawiać konfigurację PHP dla konkretnego katalogu witryny za pomocą dyrektyw php_value.
Proszę połączyć się przez FTP i znaleźć .htaccess w katalogu głównym. Należy pobrać kopię zapasową na komputer (koniecznie!). Następnie proszę dodać na końcu pliku następujące linie:

1 php_value upload_max_filesize 64M 2 php_value post_max_size 80M 3 php_value memory_limit 256M 4 php_value max_execution_time 300 5 php_value max_input_time 300
Proszę zapisać .htaccess i odświeżyć witrynę. Jeśli zamiast witryny pojawia się błąd 500 Internal Server Error, Pana/Pani serwer pracuje na CGI i dyrektywa php_value w .htaccess nie jest obsługiwana. Należy usunąć dodane linie, aby przywrócić działanie witryny, i skorzystać ze sposobu 3 (utworzenie php.ini).
Błąd 500 oraz jego odmianę 502 szczegółowo omówiliśmy w poradniku naprawiania błędów serwera WordPress.
5. Wpisanie @ini_set w functions.php szablonu
Sposób na sytuacje, gdy wszystkie poprzednie metody są niedostępne lub gdy chce Pan/Pani trzymać konfigurację w repozytorium szablonu. Proszę dodać kod do pliku functions.php szablonu potomnego: jest on wykonywany przy każdym żądaniu i nadpisuje limity w locie.
1 @ini_set('upload_max_filesize', '64M'); 2 @ini_set('post_max_size', '80M'); 3 @ini_set('memory_limit', '256M'); 4 @ini_set('max_execution_time', '300');
Kod proszę umieścić na końcu functions.php, ale przed zamykającym ?> (jeśli występuje). Proszę używać szablonu potomnego: podczas aktualizacji szablonu nadrzędnego zmiany w functions.php głównego szablonu są resetowane, szablon potomny przetrwa aktualizacje bez strat.
Po dodaniu kodu proszę sprawdzić limit w bibliotece mediów WordPress. Proszę wziąć pod uwagę, że na niektórych hostingach ini_set dla upload_max_filesize jest zablokowane na poziomie PHP (dyrektywa PHP_INI_SYSTEM nie pozwala zmieniać wartości w czasie wykonania). W takim przypadku @ini_set zostanie po cichu zignorowane i potrzebny będzie Panu/Pani sposób 3 lub 4.
Dlaczego limit się nie zmienił: diagnostyka
Wykonał Pan/Pani wszystko zgodnie z instrukcją, a ograniczenie pozostało bez zmian? Proszę przejść przez tę listę kontrolną:
post_max_sizejest mniejsze niż nowyupload_max_filesize. To najczęstsza przyczyna:post_max_sizemusi być nie mniejsze, a najlepiej o 20-30% większe od wartościupload_max_filesize: dokumentacja PHP wprost wymagapost_max_size≥upload_max_filesize. Pakietowe przesyłanie kilku plików i pola formularza są uwzględniane wpost_max_size.- Plik został utworzony nie w tym katalogu. PHP szuka
php.iniw katalogu skryptu, a następnie przechodzi w górę drzewa do katalogu głównego serwera. Proszę umieścićphp.iniw katalogu głównym witryny (public_html), a nie w podkatalogu. - Pamięć podręczna PHP (OPcache) przechowuje starą konfigurację. Niektóre serwery buforują
php.ini. Proszę zrestartować PHP przez panel hostingu lub odczekać 5-10 minut, aż pamięć podręczna zostanie unieważniona. - Serwer na CGI/FastCGI ignoruje
.htaccess. Proszę zmienić podejście: użyćphp.ini(sposób 3) lubuser.inidla FastCGI. - Dostawca hostingu sztywno ustalił limit. W najtańszych taryfach limit przesyłania jest stały i nie zmienia się w żaden sposób poza zmianą taryfy.
Jeśli żaden z wymienionych punktów nie pomógł, proszę skontaktować się z pomocą techniczną hostingu. Proszę podać domenę, metodę, którą zmieniali Państwo limit, i poprosić o sprawdzenie, czy nadpisywanie upload_max_filesize jest dozwolone w Państwa taryfie.
Wideoinstrukcja
Proces krok po kroku, jak usunąć błąd, od diagnozy do ostatecznej weryfikacji, mogą Państwo obejrzeć w tym filmie:
⁉️🤔 Często zadawane pytania
Jaką wartość upload_max_filesize wybrać?
Dla większości stron wystarczy 64 MB, pokrywa to przesyłanie motywów, wtyczek i obrazów w wysokiej rozdzielczości. Jeśli pracują Państwo z plikami wideo lub dużymi archiwami ZIP przez panel administracyjny, proszę ustawić 128-256 MB. Proszę nie gonić za gigabajtami bez powodu: im wyższy limit, tym więcej pamięci rezerwuje serwer na każde żądanie przesłania.
Czy można przesłać plik z pominięciem limitu?
Tak, przez FTP. Klient FTP łączy się z serwerem bezpośrednio i nie przechodzi przez procesor PHP, dlatego limity
upload_max_filesizego nie dotyczą. Proszę przesłać plik dowp-content/uploadsprzez FTP, a następnie zarejestrować go w bibliotece mediów WordPress za pomocą wtyczki Add From Server.
Czym różni się upload_max_filesize od post_max_size?
upload_max_filesizeto maksymalny rozmiar jednego pliku podczas przesyłania.post_max_sizeto całkowity rozmiar całego żądania POST, włącznie ze wszystkimi plikami, polami formularza i nagłówkami technicznymi. Jeśli przesyłają Państwo trzy pliki po 20 MB,upload_max_filesizemusi wynosić ≥ 20 MB, apost_max_size≥ 60 MB plus zapas na formularz. Dlategopost_max_sizezawsze ustawia się na wartość większą niżupload_max_filesize.
Dlaczego limity resetują się po aktualizacji WordPress?
WordPress nie narusza ustawień serwera PHP podczas aktualizacji, ale jeśli edytowali Państwo plik
wp-config.phplubfunctions.phpgłównego motywu, aktualizacja rdzenia/motywu mogła nadpisać te pliki. Proszę zawsze przechowywać niestandardowe ustawienia PHP wphp.ini, edytorze cPanel MultiPHP INI Editor lub w motywie potomnym, te lokalizacje nie są naruszane przez aktualizacje.
Czy trzeba restartować serwer po zmianie php.ini?
Dla hostingu współdzielonego i cPanel nie, zmiany są stosowane automatycznie w ciągu kilku minut. Dla VPS i serwera dedykowanego z PHP-FPM proszę zrestartować usługę:
sudo systemctl restart php-fpm(lubphp8.3-fpm, w zależności od wersji). Apache z mod_php zwykle wychwytuje zmiany bez restartu.
Co zrobić, jeśli limit mimo wszystko nie wzrasta
Pięć powyższych sposobów pokrywa praktycznie każdy scenariusz hostingowy. Od podstawowego wp-config.php po functions.php motywu potomnego, przeszli Państwo cały łańcuch. Jeśli po rzetelnym wykonaniu każdego punktu i diagnostyce ograniczenie pozostało bez zmian, przyczyną jest sztywna polityka dostawcy hostingu i bez zmiany planu taryfowego lub hostera nie da się jej obejść.
Proszę skontaktować się z pomocą techniczną i zapytać wprost, czy nadpisywanie upload_max_filesize jest dozwolone w Państwa planie taryfowym. Odpowiedź „nie" to powód, by rozważyć przejście na VPS lub bardziej elastyczny plan współdzielony, gdzie kontrolują Państwo ustawienia PHP bez oglądania się na innych użytkowników serwera. W międzyczasie proszę przesyłać duże pliki przez FTP: nie ma tam ograniczeń rozmiaru, a do biblioteki mediów przechwyci je wtyczka Add From Server.



