Konfigurowanie katalogu tymczasowego

48

Niedawno przeniosłem witrynę z hosta lokalnego do VPS. Udało mi się uczynić pliki publiczne i prywatne zapisywalnymi; nie jestem jednak pewien, gdzie znaleźć folder tymczasowy i jak zmienić uprawnienia. Ciągle otrzymuję ten komunikat:

Nie można skopiować podanego pliku tymczasowego: // plik3Hl91E, ponieważ katalog docelowy nie jest poprawnie skonfigurowany. Może to być spowodowane problemem z uprawnieniami do plików lub katalogów. Więcej informacji jest dostępnych w dzienniku systemu.

Używam Virtualmin, Drupal 7 i serwera Debian. Mój obecny katalog tymczasowy to /tmp.

Jasmine Ahmed
źródło

Odpowiedzi:

46

Sprawdź Administrator -> Konfiguracja -> Media -> System plików, aby spersonalizować swoją ścieżkę tmp. Upewnij się, że korzystasz ze ścieżek względnych i masz odpowiednie uprawnienia dla użytkownika Apache.

Osobiście podoba mi się przesyłanie pliku tego artykułu . Ma dobre obserwacje. To zadziałało dla mnie.

Niedawno pobrałem moją witrynę na komputer Mac. Zdarza się, że na moim komputerze Mac korzystałem mod_userdirz Apache i zapomniałem, /etc/apache2/users/nameofuser.confże muszę go ustawić AllowOverride All, w przeciwnym razie pojawi się następujący komunikat:

Nie można skopiować określonego pliku tymczasowego, ponieważ katalog docelowy nie jest poprawnie skonfigurowany.

Cayerdis
źródło
Dołączony link nie działa
pal4life
link wrócił !! autor uprzejmie odłożył stronę!
cayerdis
2
Dobrze byłoby dodać w odpowiedzi syntezę tych „obserwacji”.
fifi finance
4
Link znów nie działa.
Kari Kääriäinen
17

W twoich ustawieniach. Php

$conf['file_temporary_path'] = '/tmp';

Będzie to działać na systemach uniksowych w 99% przypadków.

Zazwyczaj katalog / tmp istnieje w systemach UNIX z otwartymi uprawnieniami i istnieje specjalnie dla plików tymczasowych i często jest konfigurowany w celu poprawy wydajności.

Możesz sprawdzić uprawnienia, uruchamiając ls -al /tmpw wierszu polecenia.

Jeśli chcesz przeczytać więcej na ten temat, zobacz https://en.wikipedia.org/wiki/Temporary_folder

chim
źródło
1
Moim zdaniem nie jest to dobra odpowiedź. Nie ma wyjaśnienia i prawdopodobnie nie zadziała, jeśli /tmpnie ma odpowiednich uprawnień. Jest to nawet sprzeczne z przyjętą odpowiedzią (która sama w sobie nie jest świetna).
fifi finance
Nie sądzę, że odpowiedź wymaga wielu wyjaśnień, powiedziałbym, że sposób działania zmiennej $ conf w ustawieniach. Php jest ogólną wiedzą dla programistów Drupala. Jedną z zalet tej odpowiedzi jest zwięzłość. Nie jestem pewien, czy jest to sprzeczne z przyjętą odpowiedzią, zaakceptowana odpowiedź zadziała i jest to alternatywa. Różnica między tą metodą a robieniem jej za pomocą interfejsu użytkownika polega na tym, że będzie działać w wielu środowiskach, ale trzeba będzie ustawić ją indywidualnie w interfejsie dla każdego środowiska.
chim
16

Ważne jest, aby zrozumieć, że problem uprawnień może występować ZARÓWNO w określonym katalogu tymczasowym (który jest zdefiniowany w admin / config / media / file-system) ORAZ w folderze, w którym ten plik tymczasowy zostanie skopiowany. Ten błąd widziałem kilka razy i zwykle nie jest to problem z folderem tymczasowym, ale z ostatecznym folderem, w którym plik ten jest kopiowany po zamieszkaniu w folderze tymczasowym.

Upewnij się również, że ścieżka publicznego systemu plików jest ustawiona poprawnie.

sheldonkreger
źródło
1
Tak było w moim przypadku. W moim przypadku musiałem ustawić własność nowo utworzonego katalogu / sites / default / files na USERNAME: apache (w niektórych systemach grupa ta nazywałaby się nobody).
Evan Donovan,
8

Miałem dokładnie ten problem i upewniłem się, że używam ścieżki względnej (witryny / domyślne / pliki / tmp) do lokalizacji folderu tmp zgodnie z sugestią, a także zmieniłem uprawnienia do folderu tmp, aby upewnić się, że jest zapisywalny przez apache, ale mój problem nadal istniał . więc postanowiłem sprawdzić komunikaty dziennika (Raporty >> Najnowsze komunikaty dziennika), aby zobaczyć, czy mogę lepiej zrozumieć, na czym polega problem. W ten sposób otrzymałem bardziej szczegółowy komunikat:

Nie można ustawić uprawnień do plików na public: // js.

To skłoniło mnie do sprawdzenia uprawnień do folderu js w witrynach / default / files i jak się okazuje, Apache nie mógł do niego pisać, więc zmieniając uprawnienia na 775 w tym folderze, pozbyłem się mojego komunikatu o błędzie. Proponuję więc sprawdzić uprawnienia do wszystkich podfolderów w witrynach / default / files, a nie tylko do folderu tmp, jeśli problem nie został jeszcze rozwiązany. Pomyślałem, że podzielę się tymi informacjami.

Andew
źródło
Mój problem był taki sam, ale używam następujących
poleceń
Zakładając, że łączysz się sudo chgrp -R www-data /var/www/mysiteze „zmianą uprawnień na 775” . To NIE jest potrzebne. Drupal nie musi pisać do każdego folderu. Tylko foldery publiczne, prywatne i foldery plików TMP.
rovr138
Tak - kluczową rzeczą w tym przypadku, że nie wspomniano o żadnej innej odpowiedzi, jest znalezienie katalogu docelowego (zazwyczaj gdzieś pod witrynami / default / files - / css i / js są głównymi kandydatami, jeśli masz włączoną konkatenację JS / CSS) i możesz zdobądź to tylko przeglądając dziennik.
William Turrell
… * Jednakże * - etykieta w formularzu administratora mówi „Ten katalog nie powinien być dostępny przez Internet.”, Więc jeśli nie podjąłeś kroków w celu ochrony / sites / default / files / tmp w Apache lub Nginx, to umieszczając go jest zły pomysł.
William Turrell,
5

możesz znaleźć ustawienia systemu plików, admin/config/media/file-system zmień je na / tmp

możesz także sprawdzić admin / raporty / status pod kątem problemów z ustawieniami

o uprawnieniu / tmp możesz dać 755, a znajdziesz je w / public_html

Ahmed
źródło
2

Komunikat o błędzie może czasami wprowadzać w błąd

Jeśli mówi, że problem dotyczy katalogu docelowego, apache prawdopodobnie nie ma uprawnień do zapisu do podfolderu site / default / files, w którym Drupal chce umieścić plik.

Dobrym rozwiązaniem jest uczynienie użytkownika apache właścicielem wszystkich plików i katalogów w witrynach / default / files

cd /path/to/sites/default
sudo chown -R _www:_www files

Lub coś podobnego powinno rozwiązać problemy z katalogiem docelowym. Dokładnie sprawdź, czy właściciel ma uprawnienia do zapisu i wykonywania we wszystkich podkatalogach.

chim
źródło
1
To rozwiązanie uratowało mi dzień, pracuję nad Ubuntu 14.014 i zrobiłem tochown -R www-data:www-data /var/www/html/sites/default/files/
Rishi Kulshreshtha
2

Katalog plików: Rozwiązywanie problemów z serwerami WWW opartymi na Apache

Jeśli pliki katalogu nie są „własnością” serwera WWW, można kontynuować na dwa sposoby. Te instrukcje zakładają, że masz dostęp do powłoki serwera WWW. Jeśli nie masz dostępu do powłoki, skontaktuj się z dostawcą usług hostingowych, aby uzyskać dodatkowe wsparcie.

Idealnie będzie można zmienić „właściciela” plików katalogu, aby pasował do nazwy serwera WWW. Na serwerze z systemem Unix lub Linux możesz zweryfikować, „kto” działa serwer sieci Web, wydając następujące polecenia:

$ ps aux  |grep apache # for Apache 2.x
$ ps aux  |grep httpd # for Apache 1.x

W zależności od serwera WWW jedno z tych poleceń zwróci serię takich wierszy:

www-data 13612  0.1  0.9  50640 20340 ? S 12:29   0:08 /usr/sbin/apache2 -k start

Pierwszą kolumną w zwróconym tekście jest „użytkownik”, na którym działa Twój serwer WWW. W tym przypadku użytkownik to dane www. Aby umożliwić zapisywanie katalogu plików przez serwer sieci Web, musisz ponownie przypisać jego własność za pomocą następującego polecenia:

$ chown -R www-data sites/default/files
$ chmod -R 0700 sites/default/files

Jeśli nie masz wystarczających uprawnień na serwerze, aby zmienić własność folderu, następną najlepszą opcją jest zapewnienie dostępu do zapisu grupowego do folderu za pomocą następującego polecenia:

$ chmod -R 0770 sites/default/files

Powinieneś także być w stanie dostosować uprawnienia do katalogu za pomocą programu FTP, jak opisano powyżej.

Po wykonaniu tych kroków potwierdź, że odpowiednie uprawnienia zostały przypisane, przechodząc do opcji Administruj -> Raporty -> Raport o stanie. Przewiń do sekcji „System plików” i potwierdź, że ustawienia są prawidłowe.

Źródło: katalog plików

Sukhjinder Singh
źródło
1

Innym źródłem błędu jest to, że nie można zapisać do folderu plików. W moim przypadku rozwiązałem to za pomocą:

$chmod 777 sites/default/files/pictures/
obywatel
źródło
15
Woah, naprawdę? 777 na czym wyraźnie jest zakład produkcyjny? To tylko nieodpowiedzialna rada.
David Meister,
Tak, daj przynajmniej 755.
user1359,
@DavidMeister Głosowałem za tobą, ale niestety na współdzielonym hostingu (wymiociny) czasami 777 to jedyny sposób, w jaki Apache może pisać do folderu
@andrewtweber jesteś tego pewien ? Nawet w dzielonym środowisku hostingowym 775 powinno być tak luźne, jak potrzebujesz. Czy możesz podać przykład dostawcy hostingu współdzielonego, który wymaga 777? Jeśli używasz 777 na wspólnym serwerze i nie masz VPS, wszyscy inni na serwerze mogą uzyskać dostęp do twoich plików.
David Meister
3
@andrewtweber również tak, lekcja nie polega na tym, że „dzielony hosting” wymaga 777, ale że „przerażający hosting” wymaga 777.
David Meister
1

W niektórych sytuacjach można to łatwo naprawić, usuwając foldery „ctools” i „js” w domyślnych plikach /. W razie potrzeby foldery te są odtwarzane przez system. Czasami przy nowej instalacji istniejącej witryny istniejące foldery już powodują problemy. Również, jeśli Twój CSS nie działa po nowej instalacji istniejącej witryny, można to również naprawić, usuwając te pliki i umożliwiając Drupalowi ich odtworzenie.

Paul Trotter
źródło
0

Moja stara i problematyczna konfiguracja

chmod 664 -R /var/drupal-bc/sites/default/files
chmod 664 -R /var/drupal-bc/sites/default/private

drw-rw-r-- 2 www-data www-data  4096 Jul 31 12:35 files
drw-rw-r-- 3 www-data www-data  4096 Jul  5 15:08 private

Moja nowa i działająca konfiguracja

chmod 774 -R /var/drupal-bc/sites/default/files
chmod 774 -R /var/drupal-bc/sites/default/private

drwxrwxr-- 2 www-data www-data  4096 Jul 31 12:35 files
drwxrwxr-- 3 www-data www-data  4096 Jul  5 15:08 private
Claudio Lente
źródło
Tak, wykonanie jest wymagane w przypadku folderów, aby można było z nich korzystać. 775 byłoby prawdopodobnie bardziej odpowiednie niż 774. W twoim przypadku ze sposobem ustawienia twojej własności 755 byłoby również dobrym rozwiązaniem.
rooby
0

Prawidłowe uprawnienia do folderu tymczasowego zależą od konfiguracji serwera WWW.

W przypadku uruchamiania Drupala z PHP jako modułu serwera WWW, na przykład Apache, użytkownik zdefiniowany w głównym pliku konfiguracyjnym serwera WWW za pomocą dyrektywy użytkownika powinien mieć do niego dostęp do zapisu.

% grep -i „użytkownik” /etc/httpd/conf/httpd.conf

Apache użytkownika

Taras
źródło
0

Miałem ten sam problem po przejściu z jednego serwera na drugi.

Próbowałem wszystkiego sugerowanego tutaj, ustawiając foldery na 755 i tak dalej.

Mój folder tymczasowy został ustawiony na „” tmp7zXhVVCO ”i ładnie skopiował pliki instalacyjne, po każdej próbie widziałem, że plik tymczasowy jest tam kopiowany, ale instalacja nadal nie udała się.

Problemem jest jednak to, że właściciel nie ma uprawnień, dlatego 777 usuwa ten błąd, ale wszyscy wiemy, że nie jest to droga do przejścia na strony produkcyjne.

Co powinieneś zrobić, to zmienić folder tymczasowy na cokolwiek innego, na przykład „temp” lub cokolwiek, co ci odpowiada, dopóki nie istnieje , drupal utworzy ten nowy folder z prawami do apache , nie z prawami użytkownika i twoim problemem będzie rozwiązany.

Kevin G.
źródło
Gdy to robię, pojawia się błądThe directory ../temp2 does not exist and could not be created.
Paul Trotter
0

Nie podoba mi się żadna z istniejących odpowiedzi, więc po prostu zacznę jedną z nich, którą prawdopodobnie z czasem zaktualizuję. Głównie z poleceniami powłoki.

Na razie uruchom to z sites/example.com:

MYSITE=example.com
FILES=sites/$MYSITE/files  
# CSS and JS might also cause trouble and advagg has its own dirs
TMPDIRS=$FILES/tmp $FILES/js $FILES/css $FILES/advagg_*
drush vset file_temporary_path $FILES/tmp # seems better than using /tmp
drush vset file_directory_temp $FILES/tmp
cd $(drush drupal-directory)   
chown www-data -R $TMPDIRS
chmod 755 -R $TMPDIRS
finanse fifi
źródło
0

Z konfiguracji -> Media -> System plików usunąłem / temp-catalog. Po tym nie miałem żadnych problemów.

Filip
źródło
0

Miałem ten sam problem podczas migracji. Mam chmod 777 wszystkie strony / domyślne / pliki, ale błąd nadal występuje. Zmieniam uprawnienia 775 na strony / domyślne / pliki i wiadomość zniknęła. Nie byłem problemem z prywatną ścieżką, mój to / var / tmp, ale pozwolenie 775.

Drewno
źródło
0

Jeśli napotkasz ten problem za pomocą Pantheon i nadal będziesz otrzymywać błąd po ustawieniu ścieżek katalogu plików (temp), może być również konieczne przełączenie trybu połączenia na pulpicie nawigacyjnym instancji programisty z Git na SFTP.

Twoja witryna Drupal może próbować zapisać pliki w katalogu zarządzanym przez Git (np. Jeśli zmieniasz ustawienia układu itp. W temacie Motywy adaptacyjne). W tym celu przełącz się na SFTP. Po zapisaniu plików możesz przełączyć się z powrotem na Git, a pulpit poprosi o zatwierdzenie zmian, które zostały wprowadzone na serwerze.

Kay V.
źródło
0

Miałem ten sam problem.

Korzystałem z IIS w systemie Windows. Wreszcie problem dotyczył uprawnień w folderach witryn / domyślnych / plikach i, oczywiście, w witrynach / domyślny / pliki / tmp.

W końcu ponownie nadałem folderom „Pełne uprawnienia” i zadziałało.

pozdrowienia

jorge_vicente
źródło