WordPress nie przesyła plików z powodu błędu MIME – jak to naprawić?

Spis treści

Zrozumienie typów MIME w WordPress

  • Typ MIME (Multipurpose Internet Mail Extensions) to standard identyfikacji typów plików w internecie. Każdy plik ma przypisany swój unikalny typ MIME, który informuje przeglądarkę i serwer, jakiego rodzaju zawartość zawiera. Na przykład plik JPEG ma typ MIME image/jpeg, dokument PDF to application/pdf, a arkusz kalkulacyjny Excel to application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.
  • WordPress wykorzystuje typy MIME do określenia, które pliki mogą być przesyłane na serwer. Domyślnie system zezwala na przesyłanie określonej grupy typów plików, które są uznawane za bezpieczne i najczęściej używane. Lista ta obejmuje popularne formaty obrazów takie jak JPEG, PNG, GIF i WebP, dokumenty tekstowe i PDF, pliki archiwów ZIP oraz pliki audio i wideo w podstawowych formatach.
  • Gdy próbujesz przesłać plik, którego typ MIME nie znajduje się na liście dozwolonych, WordPress blokuje operację i wyświetla komunikat o błędzie. Jest to celowe zabezpieczenie, które ma chronić Twoją stronę przed potencjalnie niebezpiecznymi plikami, które mogłyby zawierać złośliwy kod lub stanowić zagrożenie dla bezpieczeństwa serwera.
  • Typy MIME są używane również przez przeglądarki do określania, jak renderować zawartość strony, np. czy uruchomić player wideo.
  • Baza typów MIME jest utrzymywana przez IANA (Internet Assigned Numbers Authority).

Sprawdzenie dozwolonych typów plików

Zanim zaczniesz modyfikować ustawienia WordPress, warto sprawdzić, jakie typy plików są aktualnie dozwolone w Twoim systemie. Najprostszym sposobem jest przejście do panelu administracyjnego WordPress i nawigacja do sekcji Media → Dodaj nowy. Na dole tej strony znajdziesz link prowadzący do pełnej listy dozwolonych typów plików.

Możesz również sprawdzić listę dozwolonych typów MIME programistycznie, używając funkcji WordPress. W pliku functions.php motywu lub we własnej wtyczce możesz wywołać odpowiednią funkcję, która wyświetli listę wszystkich zarejestrowanych typów MIME w konsoli przeglądarki lub w logach. Pamiętaj, aby usunąć tę funkcję po zakończeniu diagnostyki, ponieważ nie jest przeznaczona do stałego użytku na stronie produkcyjnej.

Jeśli zauważasz, że Twój komunikat błędu nie jest zbyt konkretny, warto włączyć debugowanie w WordPress. W tym celu edytuj plik wp-config.php i zmień odpowiednią stałą na wartość włączającą debugowanie. Dzięki temu zobaczysz dokładniejsze komunikaty błędów, które pomogą Ci zidentyfikować przyczynę problemu. Pamiętaj, aby po rozwiązaniu problemu wyłączyć debugowanie na stronie produkcyjnej.

  • Wtyczki bezpieczeństwa takie jak Wordfence czy iThemes Security mogą dodatkowo ograniczać listę dozwolonych typów plików, niezależnie od ustawień WordPress.
  • Możesz użyć wtyczki "MIME Types Check" do szybkiego wyświetlenia wszystkich aktywnych typów MIME w panelu administracyjnym.

Najczęściej dozwolone typy plików w WordPress:

  • Obrazy: jpg, jpeg, png, gif, webp, ico, bmp
  • Dokumenty: pdf, doc, docx, xls, xlsx, ppt, pptx, odt, odp
  • Tekst: txt, csv, xml, json
  • Archiwa: zip, tar, gz, rar
  • Audio: mp3, m4a, wav, ogg
  • Wideo: mp4, mov, avi, mpg, webm

Konfiguracja limitów przesyłania w php.ini

  • Oprócz typów MIME, WordPress podlega ograniczeniom narzucanym przez konfigurację PHP na Twoim serwerze. Nawet jeśli typ pliku jest dozwolony, przesyłanie może się nie powieść z powodu zbyt niskich limitów serwera. Najważniejsze parametry, które wpływają na przesyłanie plików, to upload_max_filesize określający maksymalny rozmiar pojedynczego pliku, post_max_size określający maksymalny rozmiar całego żądania POST, max_execution_time określający maksymalny czas wykonywania skryptu oraz memory_limit określający maksymalną ilość pamięci RAM.
  • Aby zmodyfikować te parametry, musisz mieć dostęp do pliku php.ini na swoim serwerze. Jeśli korzystasz z hostingu współdzielonego, często możesz zmienić te ustawienia przez panel hostingowy lub plik .htaccess. W przypadku serwera dedykowanego lub VPS, będziesz musiał edytować bezpośrednio plik php.ini.
  • Jeśli nie masz bezpośredniego dostępu do php.ini, możesz spróbować zmodyfikować limity przez plik .htaccess. Dodaj odpowiednie dyrektywy na końcu pliku .htaccess znajdującego się w głównym katalogu WordPress. Pamiętaj, że ta metoda działa tylko na serwerach Apache z włączonym odpowiednim modułem. Na serwerach Nginx konfiguracja musi być zmieniona w pliku konfiguracyjnym serwera.
  • Przykładowa konfiguracja .htaccess: php_value upload_max_filesize 64M php_value post_max_size 64M
  • Sprawdź limity funkcją ini_get('upload_max_filesize') w PHP.

Dodawanie nowych typów MIME do WordPress

  • Gdy potrzebujesz przesyłać pliki w formatach, które nie są domyślnie dozwolone, musisz rozszerzyć listę typów MIME w WordPress. Najczystszym sposobem jest użycie filtra upload_mimes w pliku functions.php motywu potomnego lub we własnej wtyczce. Ta metoda jest zalecana, ponieważ nie wymaga modyfikacji plików rdzenia WordPress, które byłyby nadpisane przy każdej aktualizacji.
  • Aby dodać nowy typ MIME, musisz znać dokładną nazwę typu MIME oraz rozszerzenie pliku, które chcesz odblokować. Na przykład, aby dodać obsługę plików SVG (obrazy wektorowe), użyjesz typu MIME image/svg+xml z rozszerzeniem svg. Każdy typ pliku może mieć przypisane wiele rozszerzeń, co pozwala na elastyczne zarządzanie dozwolonymi formatami.
  • Aby dodać obsługę popularnych typów plików często blokowanych przez WordPress, musisz zdefiniować funkcję filtrującą w pliku functions.php motywu potomnego. Funkcja ta rozszerza domyślną listę dozwolonych typów MIME o dodatkowe rozszerzenia plików. Pamiętaj, aby dodać tylko te typy plików, które rzeczywiście potrzebujesz, ponieważ każdy dodany typ pliku potencjalnie zwiększa powierzchnię ataku.
  • Przykład kodu dla SVG: add_filter( 'upload_mimes', function( $mimes ) { $mimes['svg'] = 'image/svg+xml'; return $mimes; });
  • Dla Excela: $mimes['xls|xlsx'] = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';

Jeśli interesuje Cię szersze spojrzenie na problemy z przesyłaniem plików w WordPress, polecam przeczytać artykuł: WordPress blokuje przesyłanie plików .zip – jak to odblokować?, gdzie znajdziesz więcej szczegółów na temat rozwiązywania problemów z różnymi typami archiwów.

Problemy z uprawnieniami folderu uploads

Nawet jeśli typ MIME jest dozwolony i limity serwera są odpowiednie, przesyłanie może się nie powieść z powodu nieprawidłowych uprawnień do folderu, w którym WordPress przechowuje przesłane pliki. Domyślnie jest to folder wp-content/uploads, a jego uprawnienia powinny być ustawione w sposób, który pozwala serwerowi WWW na zapisywanie plików, ale jednocześnie chroni przed nieautoryzowanym dostępem.

Prawidłowe uprawnienia dla folderu przesyłanych plików to zazwyczaj 755, co oznacza, że właściciel plików może odczytywać, zapisywać i wykonywać, a grupa i pozostali użytkownicy mogą odczytywać i wykonywać. Uprawnienia do plików w tym folderze powinny być ustawione na 644, co pozwala na odczyt wszystkim, ale zapis tylko właścicielowi. Nieprawidłowe ustawienie uprawnień może prowadzić do błędów przesyłania lub stanowić poważną lukę bezpieczeństwa.

Aby sprawdzić i zmienić uprawnienia, połącz się z serwerem przez FTP/SFTP lub użyj menedżera plików w panelu hostingowym. Znajdź folder wp-content/uploads i sprawdź jego uprawnienia. Jeśli są nieprawidłowe, zmodyfikuj je zgodnie z powyższymi zaleceniami. W przypadku serwerów z systemem Linux możesz użyć polecenia chmod przez terminal.

Jeśli zmiana uprawnień nie rozwiąże problemu, sprawdź właściciela folderu. Serwer WWW (zazwyczaj użytkownik apache, www-data lub nginx) musi mieć uprawnienia do zapisu w tym folderze. Jeśli właścicielem jest inny użytkownik, może być konieczna zmiana właściciela lub dodanie serwera WWW do odpowiedniej grupy.

  • Wtyczki bezpieczeństwa mogą automatycznie zmieniać uprawnienia folderów, co może powodować konflikty z procesem przesyłania plików.
  • Użyj wtyczki "File Manager" lub "WP File Manager" do szybkiego sprawdzenia i modyfikacji uprawnień bezpośrednio z panelu WordPress.

Weryfikacja konfiguracji serwera

  • Czasami problemy z przesyłaniem plików wynikają z konfiguracji serwera WWW, a nie z samego WordPress. Jeśli używasz serwera Nginx, konfiguracja może różnić się od tej wymaganej przez Apache. Nginx ma własne mechanizmy limitowania rozmiaru przesyłanych danych, które muszą być skonfigurowane osobno.
  • W konfiguracji Nginx musisz sprawdzić parametr określający maksymalny rozmiar żądania klienta. Jeśli jest ustawiony na wartość mniejszą niż rozmiar pliku, który próbujesz przesłać, przesyłanie zakończy się niepowodzeniem. Dodaj lub zmodyfikuj ten parametr w bloku server lub location odpowiedzialnym za obsługę WordPress.
  • Dodatkowo, niektóre serwery proxy lub CDN takie jak Cloudflare mogą mieć własne limity rozmiaru plików. Jeśli używasz Cloudflare, sprawdź ustawienia w panelu, ponieważ domyślny limit na przesyłanie przez formularze może być niższy niż wymagany. W takim przypadku możesz zwiększyć limit lub wyłączyć ograniczenie dla ścieżki, na której znajduje się Twój panel WordPress.
  • Nginx: client_max_body_size 256M; w /location ~ \.php$ { }
  • Cloudflare: Security > WAF > Tools > Upload limits.

Testowanie przesyłania różnych typów plików

  • Po wprowadzeniu zmian konfiguracyjnych ważne jest, aby systematycznie przetestować przesyłanie różnych typów plików. Zacznij od małych plików, które na pewno mieszczą się w limitach serwera, a następnie stopniowo zwiększaj rozmiar i zmieniaj typy plików. Dzięki temu możesz wyizolować, czy problem dotyczy konkretnego typu MIME, rozmiaru pliku, czy też jest to problem systemowy.
  • Przetestuj przesyłanie plików z różnych źródeł: bezpośrednio z biblioteki mediów, z edytora wpisów i stron, z panelu administracyjnego oraz z front-endu strony, jeśli masz formularze umożliwiające przesyłanie użytkownikom. Różne ścieżki przesyłania mogą podlegać różnym ograniczeniom, szczególnie jeśli używasz wtyczek formularzowych z własnymi mechanizmami walidacji.
  • Podczas testowania zwróć uwagę na dokładne komunikaty błędów. Komunikat "Przepraszamy, nie możesz przesyłać tego typu plików" jednoznacznie wskazuje na problem z typem MIME. Błąd połączenia lub timeout może oznaczać problem z limitami serwera. Błąd uprawnień zazwyczaj mówi o problemach z folderem uploads. Każdy z tych problemów wymaga innego podejścia do rozwiązania.
  • Testuj z różnymi przeglądarkami, bo mogą mieć różne limity.
  • Użyj Chrome DevTools Network tab do monitorowania requestów.

Bezpieczeństwo przy dodawaniu nowych typów plików

  • Dodawanie nowych typów MIME do WordPress zwiększa funkcjonalność strony, ale jednocześnie może stanowić zagrożenie bezpieczeństwa, jeśli zostanie zrobione nieprawidłowo. Niektóre typy plików, choć pozornie niewinne, mogą być wykorzystane przez atakujących do przesłania i wykonania złośliwego kodu na Twoim serwerze.
  • Nie dodawaj nigdy następujących typów plików, chyba że masz absolutną pewność, co robisz i masz dodatkowe zabezpieczenia: pliki wykonywalne (.exe, .bat, .sh, .cmd), pliki skryptowe serwerowe (.php, .phtml, .phar, .js po stronie serwera), pliki konfiguracyjne serwera (.htaccess, .conf, .ini) oraz archiwa z możliwością wykonania kodu. Nawet pliki PDF mogą zawierać złośliwy kod JavaScript, choć ryzyko jest niższe niż w przypadku plików wykonywalnych.
  • Jeśli musisz zezwolić na przesyłanie plików, które mogą stanowić zagrożenie, rozważ dodatkowe zabezpieczenia. Używaj wtyczek do walidacji zawartości plików przed akceptacją, przechowuj przesłane pliki poza głównym katalogiem publicznym i skonfiguruj serwer WWW, aby nie wykonywał tych plików. Rozważ również ograniczenie możliwości przesyłania tylko do zaufanych użytkowników z rolą administratora lub edytora.
  • Dodaj do .htaccess: Options -ExecCGI
  • Skanuj uploads cronem z ClamAV.

Alternatywne metody przesyłania plików

  • Jeśli napotykasz nieprzekraczalne problemy z przesyłaniem plików przez standardowy mechanizm WordPress, istnieją alternatywne metody przesyłania plików na serwer. Najprostszą opcją jest użycie FTP lub SFTP do bezpośredniego przesłania plików do folderu z plikami multimedialnymi. Po przesłaniu pliku przez FTP, będzie on widoczny w bibliotece mediów WordPress, choć może być konieczne odświeżenie strony.
  • Dla użytkowników, którzy często pracują z nietypowymi typami plików, warto rozważyć wtyczki do zarządzania plikami, które oferują rozszerzone możliwości przesyłania. Niektóre wtyczki umożliwiają przesyłanie przez protokoły chmurowe, takie jak Google Drive czy Dropbox, co eliminuje problemy z limitami serwera i typami MIME narzuconymi przez WordPress.
  • Kolejną alternatywą jest użycie zewnętrznych usług do hostingu plików i osadzanie ich na stronie. Dla obrazów możesz użyć usług takich jak Cloudinary, Imgur czy Unsplash. Dla dokumentów i innych plików rozważ Google Drive, Dropbox lub dedykowane usługi hostingu plików. Ta metoda ma dodatkową zaletę w postaci odciążenia Twojego serwera i potencjalnie lepszej wydajności dla użytkowników końcowych.
  • FTP klient: FileZilla z bookmark do /wp-content/uploads/2026/01/
  • Cloudinary plugin dla automatycznego uploadu i optymalizacji.

Optymalizacja procesu przesyłania mediów

Oprócz rozwiązywania problemów z typami MIME, warto zoptymalizować cały proces przesyłania mediów, aby był bardziej efektywny i mniej obciążający dla serwera. Jedną z najważniejszych optymalizacji jest włączenie automatycznej kompresji przesyłanych obrazów. WordPress domyślnie generuje miniatury o różnych rozmiarach, co może być czasochłonne dla dużych obrazów wysokiej rozdzielczości.

Rozważ użycie wtyczek do optymalizacji obrazów, takich jak Smush, Imagify czy EWWW Image Optimizer, które automatycznie kompresują przesyłane obrazy bez znacznej utraty jakości. Te wtyczki często oferują również konwersję do nowoczesnych formatów takich jak WebP, które są lżejsze niż tradycyjne JPEG i PNG, co poprawia szybkość ładowania strony.

Jeśli Twoja strona wymaga częstego przesyłania dużej liczby plików, rozważ implementację przesyłania wsadowego (batch upload). Standardowy mechanizm przesyłania WordPress obsługuje przesyłanie wielu plików jednocześnie, ale dla bardzo dużych wolumenów warto rozważyć rozwiązania dedykowane lub wtyczki oferujące funkcje zarządzania kolejką przesyłania.

Regularnie czyszczbibliotekę mediów z nieużywanych plików. Z czasem biblioteka mediów może się rozrastać, spowalniając działanie strony i zwiększając zużycie przestrzeni dyskowej. Użyj wtyczek do identyfikacji i usuwania osadzonych plików, które nie są już używane na stronie. Pamiętaj, aby przed usunięciem sprawdzić, czy plik nie jest używany w żadnym wpisie ani na żadnej stronie.

  • Włącz lazy loading dla obrazów, aby przyspieszyć ładowanie strony i zmniejszyć zużycie przepustowości podczas przeglądania galerii.
  • Skonfiguruj CDN (Content Delivery Network) do automatycznego rozpowszechniania przesłanych plików na serwery na całym świecie.

Podsumowanie rozwiązań problemów z błędami MIME:

  • Zidentyfikuj dokładny komunikat błędów i sprawdź, czy dotyczy on typu MIME czy limitów serwera
  • Sprawdź listę dozwolonych typów plików w ustawieniach WordPress
  • Dodaj brakujące typy MIME przez filtr upload_mimes w functions.php
  • Sprawdź i dostosuj uprawnienia do folderu wp-content/uploads
  • Zmodyfikuj limity serwera w php.ini lub .htaccess jeśli to konieczne
  • Sprawdź ustawienia wtyczek bezpieczeństwa, które mogą nadpisywać ustawienia WordPress
  • Przetestuj przesyłanie różnych typów i rozmiarów plików po wprowadzeniu zmian
  • Pamiętaj o bezpieczeństwie i nie dodawaj potencjalnie niebezpiecznych typów plików

Rozwiązywanie problemów z błędami MIME w WordPress wymaga systematycznego podejścia i zrozumienia, jak działa mechanizm weryfikacji typów plików. Dzięki powyższym wskazówkom powinieneś być w stanie zidentyfikować i naprawić większość problemów z przesyłaniem plików na swojej stronie. Pamiętaj, że każda modyfikacja ustawień bezpieczeństwa powinna być przemyślana i udokumentowana.

Masz problemy z konfiguracją przesyłania plików w WordPress? Chętnie pomożemy Ci zdiagnozować przyczynę błędów MIME i skonfigurować bezpieczne ustawienia przesyłania dostosowane do Twoich potrzeb. Skontaktuj się z nami, aby uzyskać profesjonalne wsparcie w konfiguracji WordPress.