Przeniosłeś swojego WordPressa na nowy serwer, próbujesz dodać wpis, wgrywasz zdjęcie i… bum! Pojawia się irytujący błąd:
„Nie udało się wysłać pliku […] na serwer. Nie można utworzyć katalogu »uploads/2026/07«. Czy WordPress ma uprawnienie do zapisu do katalogu nadrzędnego?”
Pierwsza intuicyjna reakcja? Logujesz się przez FTP i ustawiasz uprawnienia katalogu
1 | wp-content/uploads |
na
1 | 777 |
Niestety – odświeżasz stronę, próbujesz ponownie i… dalej to samo.
Dlaczego tak się dzieje i jak to szybko naprawić? Problem wcale nie leży w uprawnieniach plików, lecz w starej konfiguracji bazy danych.
Dlaczego CHMOD 777 nie działa?
Podczas migracji witryny kopiujemy pliki oraz bazę danych MySQL. W starszych wersjach WordPressa (lub w witrynach, które miały wielokrotnie zmieniany hosting) sztywna ścieżka absolutna do katalogu z plikami zostaje zapisana na stałe w bazie danych.
Jeśli na starym serwerze Twoja strona leżała pod ścieżką:
1 | /home/user123/domains/mojastrona.pl/public_html/wp-content/uploads |
A na nowym serwerze nowa ścieżka to np.:
1 | /var/www/vhosts/mojastrona.pl/httpdocs/wp-content/uploads |
…to WordPress nadal próbuje utworzyć folder pod starą ścieżką z pierwszego serwera. Ponieważ ta ścieżka na nowym hostingu nie istnieje, system zwraca błąd o braku uprawnień – mimo że sam folder
1 | uploads |
na nowym serwerze ma pełne uprawnienia do zapisu.
Jak naprawić błąd wgrywania plików po migracji? (Krok po kroku)
Masz do wyboru dwie proste metody. Pierwsza polega na usunięciu złej ścieżki z bazy danych, druga na nadpisaniu jej w pliku konfiguracyjnym.
Metoda 1: Czyszczenie ścieżki w phpMyAdmin (Zalecana)
- Zaloguj się do panelu zarządzania hostingiem (cPanel, DirectAdmin itp.) i otwórz phpMyAdmin.
- Wybierz bazę danych swojego WordPressa.
- Otwórz tabelę 1wp_options
(uwaga: przedrostek
1wp_może być inny na Twojej stronie, np.
1wx_options).
- Szukaj rekordu, gdzie w kolumnie 1option_name
znajduje się wartość
1upload_path- Wskazówka: Możesz użyć zakładki Szukaj w phpMyAdmin.
- Zobaczysz tam starą ścieżkę do plików. Kliknij Edytuj i całkowicie wyczyść pole 1option_value
(zostaw je puste).
- Upewnij się również, że pole 1upload_url_path
jest puste.
- Kliknij Wykonaj (zapisz).
Gdy pole jest puste, WordPress przełącza się na dynamiczne ustalanie ścieżki i zaczyna używać domyślnego odnośnika względnego:
1 | wp-content/uploads |
Metoda 2: Wymuszenie ścieżki w 1
wp-config.php
1 | wp-config.php |
Jeśli nie chcesz lub nie masz dostępu do phpMyAdmin, możesz wymusić poprawną ścieżkę z poziomu kodu:
- Połącz się ze stroną przez FTP lub Menedżer Plików.
- Znajdź i edytuj plik 1wp-config.php
w katalogu głównym.
- Przed linią 1/* That's all, stop editing! Happy publishing. */
dodaj poniższy kod:
Na koniec zapisz plik i prześlij go na serwer.
WAŻNE: Pamiętaj o bezpieczeństwie! Przywróć bezpieczny CHMOD
Jeśli na czas walki z błędem ustawiłeś na foldery uprawnienia
1 | 777 |
, jak najszybciej je zmień! Nadanie każdemu użytkownikowi pełnych praw do odczytu, zapisu i wykonywania plików w katalogu mediów to otwarcie drzwi dla skryptów hakerskich.
Prawidłowe, bezpieczne uprawnienia w WordPressie to:
- Katalogi: 1755
(lub
1775w zależności od konfiguracji serwera)
- Pliki: 1644
Możesz je łatwo zmienić hurtowo w programie FileZilla (klikając prawym przyciskiem myszy na folder
1 | wp-content |
-> Uprawnienia pliku) lub wykonując komendę w konsoli SSH:
1
2 find /sciezka-do-wordpressa/wp-content/ -type d -exec chmod 755 {} \;
find /sciezka-do-wordpressa/wp-content/ -type f -exec chmod 644 {} \;
Podsumowanie
Po wykonaniu poprawek w bazie danych wyloguj się z kokpitu WordPressa, zaloguj ponownie i spróbuj wgrać plik. Problem z brakiem możliwości utworzenia katalogu
1 | uploads/YYYY/MM |
powinien zniknąć od razu!
Komentarze