Skip to content

Wszystko o WordPressie, tworzeniu stron — i nie tylko

⚙️ Jak naprawić błąd "Przesłany plik przekracza dyrektywę upload_max_filesize" w php.ini

⚙️ 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_set w 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):

Kod dla wp-config.php ze zwiększeniem limitu pamięci

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:

MultiPHP INI Editor w panelu cPanel z ustawieniami PHP

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:

Zawartość pliku php.ini z ustawieniami upload_max_filesize

Proszę dodać do pliku następujące dyrektywy:

1upload_max_filesize = 64M
2post_max_size = 80M
3memory_limit = 256M
4file_uploads = On
5max_execution_time = 300
6max_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>
2suPHP_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:

Dyrektywy php_value w pliku .htaccess w celu zwiększenia limitu przesyłania
1php_value upload_max_filesize 64M
2php_value post_max_size 80M
3php_value memory_limit 256M
4php_value max_execution_time 300
5php_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_size jest mniejsze niż nowy upload_max_filesize. To najczęstsza przyczyna: post_max_size musi być nie mniejsze, a najlepiej o 20-30% większe od wartości upload_max_filesize: dokumentacja PHP wprost wymaga post_max_sizeupload_max_filesize. Pakietowe przesyłanie kilku plików i pola formularza są uwzględniane w post_max_size.
  • Plik został utworzony nie w tym katalogu. PHP szuka php.ini w katalogu skryptu, a następnie przechodzi w górę drzewa do katalogu głównego serwera. Proszę umieścić php.ini w 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) lub user.ini dla 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_filesize go nie dotyczą. Proszę przesłać plik do wp-content/uploads przez 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_filesize to maksymalny rozmiar jednego pliku podczas przesyłania. post_max_size to 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_filesize musi wynosić ≥ 20 MB, a post_max_size ≥ 60 MB plus zapas na formularz. Dlatego post_max_size zawsze 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.php lub functions.php głównego motywu, aktualizacja rdzenia/motywu mogła nadpisać te pliki. Proszę zawsze przechowywać niestandardowe ustawienia PHP w php.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 (lub php8.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.