Skip to content

Wszystko o WordPressie, tworzeniu stron — i nie tylko

Limit przesyłania plików w WordPressie: ile i gdzie zmienić

Podaj, jakiej wielkości pliki trzeba wysyłać — narzędzie wyliczy spójny zestaw wartości i pokaże, który sposób zadziała na Twoim typie serwera. Wszystko liczone jest w przeglądarce, nic nigdzie nie jest wysyłane.

Ile ma ważyć największy plik, który zamierzasz wgrywać.
Biblioteka mediów WordPressa wysyła pliki po jednym. Własne formularze z kilkoma polami — jednym żądaniem.
Nie wiesz — zajrzyj do phpinfo(), wiersz Server API: Apache 2.0 Handler = mod_php, FPM/FastCGI = PHP-FPM, LiteSpeed = LSAPI.
DyrektywaDlaczego akurat taka wartośćWartość


    
Dlaczego nie zadziałało: lista kontrolna Wartości są zapisane, a limit został stary — prawie zawsze chodzi o jeden z dziewięciu punktów poniżej.

Twardy limit hostingu. Wartość wyższa niż pozwala pakiet jest po cichu obcinana: w pliku 512M, w phpinfo()64M. Pomaga tylko zgłoszenie do wsparcia.

Poprawiono nie ten php.ini. Aktywny plik wskazuje phpinfo() w wierszu Loaded Configuration File; obok jest Additional .ini files parsed — te też są czytane i mogą nadpisywać Twoje wartości.

LimitRequestBody w Apache'u. Limit samego serwera WWW, w bajtach, w vhoście lub w .htaccess. Obcina treść żądania wcześniej niż PHP — użytkownik widzi 413, a w logach PHP jest pusto.

Proces PHP nie został zrestartowany. php.ini jest czytany raz przy starcie. Przy PHP-FPM trzeba zrestartować sam FPM — restart nginx czy Apache'a nie odczytuje puli ponownie.

.user.ini nie jest wczytywany od razu. PHP trzyma go w pamięci podręcznej przez user_ini.cache_ttl sekund (domyślnie 300). Odczekaj 5 minut albo zrestartuj FPM.

OPcache. Samego php.ini nie buforuje, ale buforuje Twój wp-config.php z @ini_set. Po zmianie — opcache_reset() albo restart procesu.

Proxy z przodu. Cloudflare w darmowym planie ucina wysyłanie na 100 MB; load balancer, Engintron albo nginx przed Apache mają własne client_max_body_size.

Limit po stronie WordPressa. Multisite: Sieć → Ustawienia → Maksymalny rozmiar pliku (w KB). Do tego filtr upload_size_limit, który ustawiają niektóre motywy i wtyczki zabezpieczeń.

Katalog tymczasowy. Jeśli upload_tmp_dir nie ma prawa zapisu albo na partycji skończyło się miejsce, plik nie dociera i nie ma wyraźnego błędu. Sprawdź sys_get_temp_dir() i wolne miejsce.

Obliczenia wykonują się w Twojej przeglądarce — żadne dane o serwerze nigdzie nie są wysyłane.

Dlaczego zmiana samego upload_max_filesize prawie nigdy nie wystarcza

Rozmiar wysyłki ograniczają co najmniej cztery niezależne wartości i decyduje najmniejsza z nich. upload_max_filesize — rozmiar jednego pliku. post_max_size — rozmiar całego żądania POST. Musi być większy niż upload_max_filesize, inaczej plik zostanie ucięty jeszcze przed sprawdzeniem pierwszego limitu. memory_limit — musi pomieścić całe żądanie; dla WordPressa minimum 256M. client_max_body_size — limit nginxa. O nim zapomina się najczęściej: PHP już wszystko dopuszcza, a nginx zwraca 413 Request Entity Too Large. Osobną pułapką jest sposób. Dyrektywy php_value w .htaccess działają TYLKO wtedy, gdy PHP jest podłączone jako moduł Apache'a (mod_php). Na współczesnych hostingach PHP prawie zawsze działa jako FPM i wtedy taki wiersz albo jest po cichu ignorowany, albo daje 500 Internal Server Error. Właśnie dlatego narzędzie pyta o typ serwera i pokazuje, który blok naprawdę Ci pomoże.

Częste pytania