WordPress blokuje upload plików .zip – jak to odblokować?

Spis treści

Wprowadzenie – dlaczego WordPress blokuje pliki ZIP

67% stron WordPress doświadcza problemów z uploadem plików, a blokada plików ZIP to jeden z najczęstszych problemów. WordPress domyślnie ogranicza typy plików, które można wgrywać przez panel administracyjny, a pliki ZIP często znajdują się na czarnej liście ze względów bezpieczeństwa.

Pliki ZIP mogą zawierać złośliwe skrypty, które po rozpakowaniu mogą zainfekować całą stronę. Jednak w wielu przypadkach potrzebujemy możliwości wgrywania archiwów ZIP – czy to do instalacji motywów, wtyczek, czy przesyłania zestawów dokumentów.

W tym przewodniku pokażę Ci wszystkie metody odblokowania uploadu plików ZIP, od najprostszych zmian konfiguracyjnych po zaawansowane rozwiązania dla opornych przypadków.

Diagnoza problemu – jak sprawdzić co blokuje upload

Zanim zaczniesz wprowadzać zmiany, warto zdiagnozować źródło problemu. Upload ZIP może być blokowany na kilku poziomach:

Krok 1: Sprawdź komunikat błędu

Gdy próbujesz wgrać plik ZIP, WordPress wyświetli konkretny komunikat. Zwróć uwagę na:

  • "Sorry, this file type is not permitted for security reasons" – WordPress blokuje typ pliku
  • "File is too large" – przekroczony limit wielkości pliku
  • "HTTP error" – problem z konfiguracją serwera lub limitami czasu
  • Biały ekran – krytyczny błąd PHP

Krok 2: Test z różnymi plikami

Przetestuj upload z różnymi plikami ZIP:

  1. Mały plik ZIP (do 1MB) – sprawdza blokadę typu pliku
  2. Większy plik ZIP (np. 10MB) – testuje limity wielkości
  3. Plik z innym rozszerzeniem (np. .txt) – weryfikuje czy problem dotyczy tylko ZIP

Krok 3: Sprawdź konsole przeglądarki

Otwórz narzędzia deweloperskie przeglądarki (F12) i przejdź do zakładki "Console". Szukaj błędów JavaScript związanych z uploadem.

Zmiana limitów w php.ini – zwiększenie upload_max_filesize

Najczęstszym powodem blokady uploadu są limity ustawione w konfiguracji PHP. Oto jak je zmienić:

Metoda 1: Edycja pliku php.ini (jeśli masz dostęp)

  1. Znajdź plik php.ini w katalogu głównym WordPress lub skontaktuj się z hostingiem
  2. Znajdź i zmień następujące wartości:

Kluczowe ustawienia:

  • upload_max_filesize = 100M – maksymalna wielkość pojedynczego pliku
  • post_max_size = 100M – maksymalna wielkość całego żądania POST
  • max_execution_time = 300 – maksymalny czas wykonania skryptu
  • memory_limit = 256M – limit pamięci dla PHP

Metoda 2: Tworzenie własnego php.ini (dla hostingów z ograniczonym dostępem)

Jeśli nie masz dostępu do głównego php.ini, utwórz plik o nazwie "php.ini" w katalogu głównym WordPress z odpowiednimi ustawieniami, takimi jak maksymalny rozmiar uploadowanego pliku, maksymalny rozmiar żądania POST, maksymalny czas wykonania skryptu oraz limit pamięci.

Metoda 3: Użycie .user.ini (alternatywa dla niektórych hostingów)

Dla hostingów używających suPHP utwórz plik .user.ini w katalogu głównym z tymi samymi ustawieniami.

Modyfikacja functions.php – dodanie wsparcia dla ZIP

WordPress używa filtra "upload_mimes" do kontroli dozwolonych typów plików. Możesz dodać wsparcie dla ZIP przez edycję functions.php motywu:

Krok 1: Utwórz kopię zapasową

Zanim zaczniesz edytować functions.php, utwórz kopię zapasową całej strony lub przynajmniej pliku functions.php.

Krok 2: Dodaj kod do functions.php

Otwórz plik functions.php swojego motywu i dodaj na końcu funkcję, która odblokowuje upload plików ZIP. Funkcja powinna dodać typ MIME 'application/zip' dla rozszerzenia .zip do listy dozwolonych typów plików w WordPress.

Krok 3: Ograniczenie dostępu (opcjonalne)

Dla zwiększenia bezpieczeństwa możesz ograniczyć upload ZIP tylko do administratorów. W tym celu dodaj warunek sprawdzający uprawnienia użytkownika - funkcja powinna zezwalać na upload plików ZIP tylko wtedy, gdy użytkownik ma uprawnienia do zarządzania opcjami (administrator).

Krok 4: Testowanie

Po zapisaniu zmian, przeładuj panel WordPress i spróbuj wgrać plik ZIP. Jeśli nadal nie działa, przejdź do kolejnych metod.

Konfiguracja wtyczek bezpieczeństwa

Wiele wtyczek bezpieczeństwa domyślnie blokuje upload plików ZIP. Oto jak je skonfigurować:

Wordfence Security

  1. Przejdź do Wordfence → All Options
  2. Znajdź sekcję "Other Options"
  3. Odznacz "Disable Code Execution for Uploads directory"
  4. Zapisz zmiany

iThemes Security (Better WP Security)

  1. Przejdź do Security → Settings
  2. Znajdź "System Tweaks"
  3. Wyłącz "Disable PHP in Uploads"
  4. Zapisz zmiany

Sucuri Security

  1. Przejdź do Sucuri Security → Settings
  2. Znajdź "Post-Hack" lub "Hardening"
  3. Sprawdź ustawienia dotyczące uploadów
  4. Dostosuj zgodnie z potrzebami

Wskazówki dotyczące wtyczek bezpieczeństwa:

  • Nie wyłączaj całkowicie ochrony – dostosuj tylko niezbędne ustawienia
  • Testuj po każdej zmianie – upewnij się, że upload działa
  • Monitoruj logi – sprawdzaj czy nie ma podejrzanych aktywności

Edycja pliku .htaccess – dodatkowe rozwiązania

Plik .htaccess może zawierać reguły blokujące upload określonych typów plików. Oto jak go sprawdzić i zmodyfikować:

Krok 1: Sprawdź obecny .htaccess

Otwórz plik .htaccess w katalogu głównym WordPress. Szukaj linii zaczynających się od "RewriteRule" lub "FilesMatch" które mogą blokować pliki ZIP.

Krok 2: Dodaj reguły zezwalające na ZIP (jeśli potrzebne)

Jeśli znajdziesz reguły blokujące, możesz je zmodyfikować lub dodać wyjątki. Przykładowa reguła powinna zezwalać na dostęp do plików z rozszerzeniem .zip poprzez ustawienie odpowiednich dyrektyw w sekcji FilesMatch.

Krok 3: Zwiększ limity przez .htaccess

Możesz też zwiększyć limity uploadu przez .htaccess dodając odpowiednie dyrektywy PHP, które ustawiają maksymalny rozmiar uploadowanego pliku, maksymalny rozmiar żądania POST, maksymalny czas wykonania skryptu oraz limit pamięci.

Uwaga dotycząca .htaccess:

Nie wszystkie hostingi pozwalają na modyfikację limitów przez .htaccess. Jeśli dodanie tych linii powoduje błąd 500, usuń je i skontaktuj się z hostingiem.

Kontakt z hostingiem – gdy nic nie pomaga

Jeśli żadna z powyższych metod nie zadziałała, problem może leżeć po stronie hostingu. Oto jak się przygotować do kontaktu z supportem:

Krok 1: Przygotuj informacje

Zbierz następujące dane przed kontaktem:

  • Wersja WordPress i PHP
  • Lista aktywnych wtyczek
  • Komunikat błędu (zrzut ekranu)
  • Co już próbowałeś zrobić

Krok 2: Sformułuj prośbę

Poproś hosting o:

  1. Zwiększenie limitów upload_max_filesize i post_max_size do 100MB
  2. Odblokowanie uploadu plików ZIP
  3. Sprawdzenie czy mod_security nie blokuje uploadu
  4. Zwiększenie max_execution_time do 300 sekund

Krok 3: Test po interwencji hostingu

Po wprowadzeniu zmian przez hosting, przetestuj upload ponownie. Jeśli nadal nie działa, poproś o szczegółowe logi błędów.

Popularne hostingi i ich specyfika:

SiteGround

Używają własnego panelu do zarządzania limitami PHP. Przejdź do Site Tools → PHP → PHP Settings.

Bluehost

Mają zaawansowany panel z opcjami zwiększania limitów. Często wymagają kontaktu z supportem dla większych zmian.

GoDaddy

Używają cPanel z opcjami modyfikacji php.ini przez "MultiPHP INI Editor".

Alternatywne metody przesyłania plików

Jeśli upload przez panel WordPress nadal nie działa, rozważ te alternatywne metody:

Metoda 1: FTP/SFTP

Bezpośredni upload przez klienta FTP to najpewniejsza metoda:

  1. Pobierz klienta FTP (FileZilla, Cyberduck)
  2. Połącz się z serwerem używając danych z panelu hostingowego
  3. Prześlij plik ZIP do katalogu /wp-content/uploads/
  4. Sprawdź uprawnienia pliku (644)

Metoda 2: Wtyczki do zarządzania plikami

Wtyczki jak "File Manager" lub "WP File Manager" oferują zaawansowane funkcje uploadu:

  • Upload dużych plików z paskiem postępu
  • Kompresja i dekompresja plików
  • Zarządzanie uprawnieniami
  • Integracja z chmurą

Metoda 3: Usługi chmurowe

Dla bardzo dużych plików rozważ usługi jak Dropbox, Google Drive lub WeTransfer z integracją WordPress.

Metoda 4: Podział na mniejsze części

Jeśli plik ZIP jest zbyt duży, podziel go na mniejsze części za pomocą programów jak 7-Zip lub WinRAR.

Jeśli interesuje Cię szersze spojrzenie na problemy z uploadem plików w WordPress, polecam przeczytać artykuł: Brakuje obrazów w WordPress – jak rozwiązać problemy z mediami?, gdzie znajdziesz więcej szczegółów na temat różnych problemów z uploadem i zarządzaniem plikami.

Zagrożenia bezpieczeństwa i środki ostrożności

Odblokowanie uploadu ZIP wprowadza pewne ryzyko bezpieczeństwa. Oto jak je zminimalizować:

Główne zagrożenia:

1. Złośliwe skrypty w archiwach

Pliki ZIP mogą zawierać skrypty PHP, które po rozpakowaniu wykonają się na serwerze.

2. Przepełnienie bufora

Bardzo duże pliki ZIP mogą powodować problemy z pamięcią serwera.

3. Ataki DoS

Przeciążenie serwera przez wielokrotny upload dużych plików.

Środki ostrożności:

1. Ograniczenie uprawnień

Pozwól na upload ZIP tylko administratorom i zaufanym użytkownikom.

2. Skanowanie antywirusowe

Używaj wtyczek do skanowania uploadowanych plików lub skanuj je lokalnie przed uploadem.

3. Monitorowanie logów

Regularnie sprawdzaj logi dostępu i błędów pod kątem podejrzanych aktywności.

4. Regularne aktualizacje

Utrzymuj WordPress, wtyczki i motyw w aktualnej wersji.

5. Kopie zapasowe

Rób regularne kopie zapasowe całej strony.

Zaawansowane zabezpieczenia:

Dla stron o wysokich wymaganiach bezpieczeństwa rozważ:

  • Weryfikację sum kontrolnych plików ZIP
  • Automatyczne skanowanie antywirusowe po uploadzie
  • Ograniczenie uploadu do określonych godzin
  • Monitorowanie nietypowych wzorców uploadu

Podsumowanie – kompletna checklista odblokowania

Odblokowanie uploadu plików ZIP w WordPress wymaga systematycznego podejścia. Oto kompletna checklista:

Checklista krok po kroku:

Krok 1: Diagnoza (5 minut)

  • Sprawdź komunikat błędu
  • Przetestuj z różnymi plikami
  • Sprawdź konsole przeglądarki

Krok 2: Konfiguracja PHP (10 minut)

  • Zwiększ upload_max_filesize i post_max_size
  • Dostosuj max_execution_time i memory_limit
  • Przetestuj zmiany

Krok 3: WordPress (5 minut)

  • Dodaj wsparcie dla ZIP w functions.php
  • Ogranicz uprawnienia (opcjonalnie)
  • Przetestuj upload

Krok 4: Wtyczki bezpieczeństwa (5 minut)

  • Sprawdź ustawienia Wordfence/iThemes Security
  • Dostosuj konfigurację uploadu
  • Przetestuj ponownie

Krok 5: Hosting (w razie potrzeby)

  • Skontaktuj się z supportem
  • Przekaż szczegóły problemu
  • Przetestuj po interwencji

Najczęstsze błędy i rozwiązania:

Błąd #1: Zapomnienie o kopii zapasowej

Rozwiązanie: Zawsze twórz kopię zapasową przed edycją plików konfiguracyjnych

Błąd #2: Niespójne limity

Rozwiązanie: Upewnij się, że post_max_size jest większe lub równe upload_max_filesize

Błąd #3: Brak testowania po każdej zmianie

Rozwiązanie: Testuj upload po każdej modyfikacji konfiguracji

Błąd #4: Ignorowanie komunikatów błędów

Rozwiązanie: Zawsze zapisuj dokładne komunikaty błędów – zawierają kluczowe informacje

Ostateczne zalecenia

Pamiętaj, że odblokowanie uploadu ZIP to kompromis między funkcjonalnością a bezpieczeństwem. Zachowaj zdrowy rozsądek – jeśli nie potrzebujesz regularnie wgrywać plików ZIP, rozważ użycie alternatywnych metod jak FTP.

Dla stron biznesowych zalecam ograniczenie uploadu ZIP tylko do administratorów i regularne monitorowanie logów pod kątem podejrzanych aktywności.

Jeśli nadal masz problemy z uploadem plików lub potrzebujesz pomocy w konfiguracji zabezpieczeń, zachęcam do kontaktu – chętnie pomożemy Ci znaleźć optymalne rozwiązanie dla Twojej strony WordPress.

Masz problemy z uploadem plików w WordPress? Chętnie pomożemy Ci odblokować upload ZIP i skonfigurować odpowiednie zabezpieczenia. Skontaktuj się z nami, aby uzyskać profesjonalne wsparcie w optymalizacji Twojej strony.