WordPress, błąd "Unable to create directory uploads..."

24-12-2020 | 14:09
Komentarze (1)1
WordPress
Po przeniesieniu WordPressa na inny hosting, czasem, może pojawić się błąd: "Unable to create directory uploads. Is its parent directory writable by the server?"

Najczęściej czytane

Unable to create directory uploads...Unable to create directory uploads...

Po przeniesieniu WordPressa na inny hosting czasem może pojawić się błąd: "Unable to create directory uploads. Is its parent directory writable by the server?"

Błąd ładowania plików w WordPressBłąd ładowania plików w WordPress

Błąd "Unable to create directory uploads. Is its parent directory writable by the server?" występuje w przypadku gdy WordPress nie jest w stanie zapisać pliku medialnego (na przykład, zdjęcie) do foldera wp-content/uploads.

Przeszukałem całą sieć, wszędzie podane rozwiązania dotyczące zmiany uprawnień do foldera wp-content/uploads. Okazało się że w moim przypadku to nie działa. Musiałem zdebugować WordPressa i znaleźć linijkę kodu która wywołuje błąd, a później naprawić usterkę.

Rzeczywiście, błąd "Unable to create directory uploads..." w WordPressie może pojawić się w wyniku złych uprawnień (chown, chmod) do foldera wp-content/uploads. Wystarczy sprawdzić czy użytkownik od którego uruchomiony jest WEB serwer ma uprawnienia 755 do foldera wp-content/uploads i wszystkich nadrzędnych folderów.

Żeby sprawdzić uprawnienia do foldera, można poprzez FTP zalogować się na serwer, dojść do foldera uploads i sprawdzić, na przykład, w FileZilla klikając prawym przyciskiem myszki i wybierając File permissions...

FileZilla, File permissions...FileZilla, File permissions...

tak to powinno być ustawione (czyli uprawnienia 755):

FileZilla, uprawnienia folderaFileZilla, uprawnienia foldera

Tylko że problem może być ukryty piętro wyżej, bo na współdzielonym hostingu przez FTP nie powinno być dostępu do głównego foldera, tylko zaczynając od foldera użytkownika, dlatego lepiej tę czynność robić przez SSH. Dla tych którzy potrafią korzystać z SSH, podobno, nie muszę tłumaczyć jak to się robi. Ale jeśli chcecie żeby napisałem instrukcję wraz ze zrzutami ekranu dla SSH - dajcie znać w komentarzu pod artykułem.

Wydawało by się że jest proste... A, jednak, nie koniecznie, bo mi to nie pomogło. Okazało się że problem, w moim przypadku, był gdzie-indziej. Nie będę tłumaczył jak do tego doszedłem, bo musiałem zagłębić się w kod WordPressa i zdebugować go żeby dojść do sedna sprawy. W dużym skrócie, okazało się że WordPress zapisuje do bazy danych ścieżkę do foldera uploads i później przy załadowaniu plików w za pośrednictwem rozdziału Media w panelu administratora korzysta ze ścieżki zapisanej w bazie danych. Ścieżka ta jest zapisana od foldera głównego serwera, czyli coś w stylu /users/user_100500/domains/public/www/wp-content/uploads, szczegóły zależą od konkretnego hostingu. Po przeniesieniu na inny hosting, ścieżka ta, rzecz jasna, możne być inna.

Najpierw trzeba dowiedzieć się jaka jest rzeczywista ścieżka do foldera uploads. Można to zrobić w następujący sposób: stworzyć plik o nazwie test.php o treści

<?php print_r(__FILE__); ?>

wgrać go do foldera wp-content/uploads/ i uruchomić w przeglądarce (oczywiście, zamiast ekstrazarombistastrona.pl wpisujemy adres naszej strony): ekstrazarombistastrona.pl/wp-content/uploads/test.php, powinno wyświetlić ścieżkę:

FileZilla, uprawnienia folderaFileZilla, uprawnienia foldera

Jeśli ścieżkę już znamy (oczywiście, bez samego pliku test.php), to logujemy się do naszego PHPMyAdmin (gdyby ktoś nie wiedział, jest to narzędzie do zarządzania bazą danych, prawie każdy hosting udostępnia takie narzędzie), wybieramy naszą bazę danych i w zakładce SQL wpisujemy zapytanie:

UPDATE prefix_options
SET option_value = '/home/user_100500/bla_bla_bla/wp-content/uploads'
WHERE option_name = 'upload_path'

Albo można ręcznie odnaleźć tabelę options (z odpowiednim prefiksem), w tabeli znaleźć wiersz z wartością upload_path w kolumnie option_name i ręcznie podstawić zawartość kolumny option_value.

Proszę uważać na następujące niuanse (czy to w SQL zapytaniu czy przy ręcznym modyfikowaniu, obojętnie):

  • W nazwie tabeli prefix_options proszę pilnować prefiksu, bo "prefix_" to tylko przykładowy prefiks. Ktoś będzie miał "wp_", a ktoś ma jeszcze inaczej.
  • Docelowa ścieżka "/home/user_100500/bla_bla_bla/wp-content/uploads" powinna być Waszą właściwą ścieżką, uzyskaną tak jak opisałem wyżej.

Po zmianie ścieżki w bazie danych wszystko śmiga tak jak powinno.

Jeśli Wam, drodzy czytelnicy i czytelniczki bloga informatycznego, coś pójdzie nie tak - śmiało piszcie w komentarzu, jeśli będę w stanie pomóc - pomogę jakąś poradą.

Dziękuję że jesteście!

Kurs online WordPress dla początkujących.
Kurs online WordPress dla początkujących.

Jeśli znalazłe[-a]ś w tekście, literówkę, błąd stylistyczny albo inny błąd językowy - bardzo proszę o napisanie poprawki w komentarzu pod artykułem albo przez formularz kontaktowy. Dziękuję!

Autor artykułu: Sergiusz Diundyk.

Komentarze

Jacek
02-12-2023 | 21:23
Doskonale to wszystko opisałeś! Zadziałało! Wielkie dzięki. Pozdrawiam. Jacek.
 Dodaj odpowiedź 
Twoja odpowiedź:

 Oświadczam że przeczytałe[-a]m Regulamin i akceptuję go w całości i bezwarunkowo.
 
Imię lub pseudonim
 
Twój komentarz
Wyślij odpowiedź
Dodaj nowy komentarz:

 Oświadczam że przeczytałe[-a]m Regulamin i akceptuję go w całości i bezwarunkowo.
 
Imię lub pseudonim
 
Twój komentarz
Wyślij komentarz
Zoom
Ok