Przejdź do treści
Konfiguracja

Jak zwiększyć limit przesyłania plików w WordPressie

Sprawdź obecny limit przesyłania plików w WordPressie i podnieś go we właściwym miejscu dla swojego hostingu: php.ini, .user.ini, .htaccess, cPanel, Nginx.

Opublikowano Zaktualizowano

Aby zwiększyć limit przesyłania plików w WordPressie, podnieś dwa ustawienia PHP, upload_max_filesize i post_max_size, w pliku konfiguracyjnym, który Twój hosting faktycznie odczytuje. To php.ini na serwerze, którym zarządzasz, .user.ini na większości hostingów współdzielonych z PHP-FPM lub FastCGI, .htaccess tylko wtedy, gdy Apache uruchamia PHP jako moduł, albo MultiPHP INI Editor w cPanelu. Jeśli Twój serwer działa na Nginx, podnieś też client_max_body_size. Edycja wp-config.php nie zmieni limitu przesyłania.

Narzędzie do maksymalnego rozmiaru przesyłania w WordPressie zamienia jeden docelowy rozmiar na pasujące wartości dla php.ini (lub .user.ini), .htaccess i wp-config.php, więc możesz je wkleić zamiast przepisywać ręcznie.

Krok 1: Sprawdź obecny limit przesyłania

Zanim cokolwiek zmienisz, sprawdź, jaki jest obecny limit i które ustawienie go wyznacza.

  • Media > Dodaj nowy. Ekran przesyłania pokazuje maksymalny rozmiar przesyłanego pliku. To ta liczba, którą chcesz podnieść.
  • Narzędzia > Kondycja witryny > Informacje. Rozwiń sekcję Obsługa mediów. Dokumentacja Kondycji witryny wymienia, co tam znajdziesz: maksymalny dozwolony rozmiar danych POST, maksymalny rozmiar przesyłanego pliku oraz maksymalny efektywny rozmiar pliku, czyli mniejszą z tych dwóch wartości. Sekcja Serwer pokazuje więcej wartości PHP.
Ekran Upload Media w WordPressie z wierszem Maximum upload file size: 2 GB pod obszarem przesyłania
Tu limit widać na ekranie przesyłania, pod obszarem przesyłania. Te 2 GB to wartość naszego serwera testowego; wielu dostawców hostingu ustawia znacznie mniej.
Informacje Site Health w WordPressie, sekcja Media Handling, z pozycjami max size of post data allowed, max size of an uploaded file i max effective file size
Narzędzia > Kondycja witryny > Informacje > Obsługa mediów na naszej witrynie testowej, z limitami danych wpisu, przesyłanego pliku i limitem efektywnym w osobnych wierszach.

WordPress oblicza swój limit w wp_max_upload_size(), która odczytuje z PHP upload_max_filesize i post_max_size i używa mniejszej wartości. Jeśli jedna wynosi 64M, a druga 8M, Twój limit to 8M.

Krok 2: Poznaj ustawienia, które mają znaczenie

UstawienieCo ograniczaDomyślnie w PHPGdzie można je zmienić
upload_max_filesizeNajwiększy pojedynczy przesyłany plik2Mphp.ini, .user.ini, .htaccess, httpd.conf
post_max_sizeCałe żądanie POST, razem z plikiem8Mphp.ini, .user.ini, .htaccess, httpd.conf
memory_limitPamięć, której PHP może używać podczas działania128MWszędzie, także w wp-config.php
max_execution_timeLiczba sekund, przez które skrypt może działać30Wszędzie, także w wp-config.php
client_max_body_size (Nginx)Treść żądania, którą Nginx przyjmie1mTylko konfiguracja Nginx

Domyślne wartości PHP i tryby zmian pochodzą z listy dyrektyw php.ini, a domyślna wartość Nginx z dokumentacji modułu core Nginx. Większość hostingów ustawia wyższe wartości niż domyślne w PHP, dlatego swoje prawdziwe liczby odczytasz w Kondycji witryny.

upload_max_filesize i post_max_size to w terminologii PHP ustawienia INI_PERDIR: „można je ustawić w php.ini, .htaccess, httpd.conf lub .user.ini” i nigdzie indziej. memory_limit nie ogranicza rozmiaru pliku, ale WordPress potrzebuje pamięci, by tworzyć przeskalowane kopie dużych obrazków, więc duży plik może nadal zawieść z błędem wyczerpania pamięci już po dotarciu na serwer.

Krok 3: Podnieś limit we właściwym miejscu dla swojego hostingu

Twoja konfiguracjaGdzie to ustawićUwagi
VPS lub serwer dedykowanyphp.ini, który PHP faktycznie wczytujePotem zrestartuj PHP-FPM lub Apache
Hosting współdzielony z PHP-FPM lub FastCGI.user.ini w katalogu głównym WordPressaZmiana może zadziałać dopiero po 5 minutach
Apache z PHP jako modułem (mod_php).htaccess z php_valuePod PHP-FPM lub FastCGI powoduje błąd 500
Hosting z cPanelemSoftware > MultiPHP INI EditorZapisuje za Ciebie php.ini, .user.ini lub .htaccess
Nginx przed PHPclient_max_body_size oraz wartości PHPW przeciwnym razie Nginx zwraca 413
Zarządzany hosting WordPressPanel hostingu lub wsparcieWiele firm ogranicza przesyłanie na poziomie platformy
Strona za CloudflareWłasny limit przesyłania Cloudflare100 MB w planach Free i Pro

php.ini (serwer, którym zarządzasz)

Najpierw znajdź wczytywany plik. Utwórz tymczasowy plik z zawartością <?php phpinfo();, otwórz go w przeglądarce, odczytaj wiersz „Loaded Configuration File”, a potem usuń ten plik. Edytuj wskazany php.ini:

upload_max_filesize = 128M
post_max_size = 130M
max_execution_time = 300

Następnie zrestartuj PHP, żeby wczytało zmianę. W PHP-FPM nazwa usługi zawiera wersję, na przykład sudo systemctl restart php8.3-fpm w Debianie lub Ubuntu. Przy mod_php zrestartuj Apache.

.user.ini (większość hostingów współdzielonych)

PHP odczytuje pliki .user.ini tylko wtedy, gdy działa jako CGI lub FastCGI, co obejmuje PHP-FPM. Utwórz lub edytuj .user.ini w folderze, w którym jest wp-config.php:

upload_max_filesize = 128M
post_max_size = 130M

PHP ponownie odczytuje te pliki co user_ini.cache_ttl sekund, domyślnie co 300. Odczekaj pięć minut, zanim uznasz, że nie zadziałało, albo zrestartuj PHP-FPM, jeśli możesz.

.htaccess (tylko Apache z mod_php)

php_value upload_max_filesize 128M
php_value post_max_size 130M

Podręcznik PHP opisuje te dyrektywy dla PHP działającego jako moduł Apache. Jeśli zaraz po zapisaniu tych linii strona pokazuje 500 Internal Server Error, PHP działa jako FastCGI lub PHP-FPM. Usuń te linie i użyj .user.ini.

cPanel MultiPHP INI Editor

W cPanelu otwórz Software > MultiPHP INI Editor, wybierz domenę i zmień wartości w trybie Basic Mode. Według dokumentacji cPanelu Basic Mode zapisuje ustawienia do plików php.ini, .user.ini i .htaccess tam, gdzie każdy z nich je obsługuje, więc nie musisz wiedzieć, którego używa Twój serwer.

Nginx

Nginx sprawdza rozmiar żądania, zanim zobaczy je PHP. Gdy żądanie jest większe niż client_max_body_size, Nginx zwraca 413 Request Entity Too Large. Wartość domyślna to 1m. Dodaj w bloku server wartość co najmniej tak dużą jak post_max_size:

client_max_body_size 130M;

Przetestuj i przeładuj poleceniem sudo nginx -t && sudo systemctl reload nginx. W Apache odpowiednikiem jest LimitRequestBody, którego na standardowym hostingu WordPress rzadko trzeba zmieniać.

Hostingi zarządzane i Cloudflare

Niektóre zarządzane hostingi WordPress ignorują Twój php.ini lub .user.ini i ustawiają limit dla całej platformy. Jeśli po zmianie Kondycja witryny nadal pokazuje starą liczbę, zapytaj hosting, jakie jest maksimum i czy mogą je podnieść.

Jeśli strona działa przez Cloudflare, Cloudflare ma własny limit. Jego dokumentacja cache podaje maksymalne rozmiary przesyłania: 100 MB w planach Free i Pro, 200 MB w Business i do 5 GB w Enterprise. Żadne ustawienie PHP tego nie obejdzie.

Dlaczego wp-config.php nie działa

Wiele artykułów radzi dodać do wp-config.php:

@ini_set( 'upload_max_filesize', '128M' );
@ini_set( 'post_max_size', '130M' );

Oba ustawienia mają tryb INI_PERDIR, a dokumentacja PHP mówi, że ustawień w tym trybie nie można zmieniać przez ini_set(). Znak @ ukrywa błąd, więc linie wyglądają niewinnie i niczego nie zmieniają. W wp-config.php możesz zmienić pamięć, bo memory_limit da się ustawić wszędzie:

define( 'WP_MEMORY_LIMIT', '256M' );

To pomaga, gdy duże obrazki zawodzą podczas przetwarzania. Nie zmienia maksymalnego rozmiaru przesyłanego pliku.

Krok 4: Potwierdź zmianę

Odśwież Media > Dodaj nowy i sprawdź, czy maksymalny rozmiar przesyłanego pliku pokazuje nową wartość. Jeśli nie:

  • Sprawdź, czy post_max_size jest co najmniej tak duże jak upload_max_filesize. WordPress używa mniejszej wartości.
  • Upewnij się, że edytujesz plik, który PHP faktycznie wczytuje. php.ini w złym folderze jest ignorowany.
  • Odczekaj pięć minut po zmianie w .user.ini albo zrestartuj PHP-FPM.
  • Jeśli liczba w WordPressie się zmieniła, a przesyłanie nadal kończy się błędem 413, blokada jest w Nginx, proxy Twojego hostingu albo w Cloudflare.
  • Jeśli plik dociera do WordPressa, a potem pojawia się „Błąd HTTP”, problemem nie jest już rozmiar. Nasz poradnik o błędzie HTTP przy przesyłaniu obrazka w WordPressie omawia typowe przyczyny.

Jak wysoko ustawić limit?

Ustaw go na największy plik, który naprawdę musisz przesłać, z małym zapasem, i trzymaj post_max_size nieco powyżej upload_max_filesize. Duże pliki przesyłają się też dłużej, więc podnieś max_execution_time, jeśli duże pliki przekraczają czas przy wolnym łączu. Przy bardzo dużych plikach, takich jak długie filmy czy archiwa kopii zapasowych, przesyłanie przez SFTP lub wtyczkę z przesyłaniem w częściach jest zwykle bardziej niezawodne niż jedno ogromne przesyłanie przez przeglądarkę, a limit planu Cloudflare i tak może wykluczyć drogę przez przeglądarkę.

Gdy znasz docelową wartość, narzędzie do maksymalnego rozmiaru przesyłania napisze za Ciebie pasujące linie PHP. Jeśli Twój serwer działa na Nginx, dodaj samodzielnie linię Nginx z tego poradnika.

FAQ

Pytania

Jak sprawdzić obecny limit przesyłania plików w WordPressie?

Przejdź do Media > Dodaj nowy. Ekran przesyłania pokazuje maksymalny rozmiar przesyłanego pliku. Szczegóły znajdziesz w Narzędzia > Kondycja witryny > Informacje w sekcji Obsługa mediów: maksymalny rozmiar przesyłanego pliku, maksymalny rozmiar danych POST oraz maksymalny efektywny rozmiar pliku, czyli mniejszą z tych dwóch wartości.

Dlaczego WordPress pisze, że przesłany plik przekracza dyrektywę upload_max_filesize w php.ini?

Plik jest większy niż ustawienie PHP upload_max_filesize. WordPress nie ustala tego limitu, tylko odczytuje go z PHP. Podnieś razem upload_max_filesize i post_max_size w php.ini, .user.ini lub, na Apache z mod_php, w .htaccess. Domyślna wartość upload_max_filesize w samym PHP to tylko 2M, choć większość hostingów ustawia wyższą.

Czy mogę zwiększyć limit przesyłania w wp-config.php?

Nie. upload_max_filesize i post_max_size to ustawienia PHP_INI_PERDIR, które PHP przyjmuje tylko z php.ini, .htaccess, httpd.conf lub .user.ini. Linia ini_set() w wp-config.php wykona się bez błędu i niczego nie zmieni. wp-config.php może podnieść limit pamięci WordPressa, ale to nie pamięć ogranicza rozmiar pliku.

Dlaczego po podniesieniu limitów PHP nadal widzę 413 Request Entity Too Large?

Żądanie odrzuca coś, co stoi przed PHP. W Nginx jest to client_max_body_size, którego wartość domyślna to 1m, a po jej przekroczeniu Nginx zwraca błąd 413. Podnieś ją w bloku server i przeładuj Nginx. Jeśli Twoja strona działa przez Cloudflare, limit rozmiaru przesyłania w Twoim planie też może zatrzymać żądanie, zanim dotrze do serwera.

Czy post_max_size musi być większe niż upload_max_filesize?

Powinno być co najmniej tak samo duże, a nieco większe jest bezpieczniejsze. Plik jest wysyłany w żądaniu POST razem z innymi danymi formularza, więc całe żądanie liczy się do post_max_size. WordPress używa mniejszej z tych dwóch wartości jako limitu przesyłania, więc podniesienie samego upload_max_filesize zostawia limit bez zmian.