Налаштування тимчасового каталогу


48

Нещодавно я перемістив сайт з localhost до VPS. Мені вдалося зробити публічні та приватні файли доступними для запису; однак я не впевнений, де знайти тимчасову папку та як змінити дозволи. Я продовжую отримувати це повідомлення:

Вказаний файл тимчасовий: // file3Hl91E неможливо скопіювати, оскільки каталог призначення неправильно налаштований. Це може бути викликано проблемою з дозволами на файли чи каталоги. Більше інформації можна знайти в системному журналі.

Я використовую Virtualmin, Drupal 7 та сервер Debian. Мій поточний тимчасовий каталог /tmp.

Відповіді:


46

Перевірте Адміністратор -> Конфігурація -> Медіа -> Файлова система, щоб персоналізувати ваш tmp шлях. Переконайтеся, що ви використовуєте відносні шляхи та маєте права привілеїв для користувача Apache.

Мені особисто подобається завантаження цього файлу статті виправлення . У нього хороші спостереження. Це працювало для мене.

Нещодавно я завантажив свій сайт на свій комп'ютер Mac. Буває, що в своєму Mac я використовував mod_userdirдля Apache, і я забув, що в /etc/apache2/users/nameofuser.confмені потрібно встановити AllowOverride All, інакше у мене з’явиться таке повідомлення:

Зазначений тимчасовий файл неможливо скопіювати, оскільки каталог призначення неправильно налаштований.


Посилання включено
pal4life

посилання повернулася !! автор люб’язно повернув сайт!
cayerdis

2
Добре було б додати у відповідь синтез цих «спостережень».
fifi finance

4
Посилання знову не працює.
Kari Kääriäinen


17

У своїх налаштуваннях.php

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

Це працюватиме на системах Unix 99% часу.

Зазвичай каталог / tmp існує в системах UNIX з відкритими дозволами, і він існує спеціально для тимчасових файлів і часто встановлюється для підвищення продуктивності.

Ви можете перевірити дозволи, запустивши ls -al /tmpв командному рядку.

Якщо ви зацікавлені в подальшому читанні про це, дивіться https://en.wikipedia.org/wiki/Temporary_folder


1
На мою думку, це не дуже хороша відповідь. Немає пояснень, і це, ймовірно, не спрацює, якщо /tmpне має правильних дозволів. Це навіть суперечить прийнятій відповіді (яка сама по собі теж не велика).
fifi finance

Я не думаю, що відповідь не потребує особливих пояснень, я б сказав, що те, як працює змінна $ conf в налаштуваннях.php, є загальним знанням для розробників Drupal. Одна з приємних речей у цій відповіді - це лаконічність. Я не впевнений, що це суперечить прийнятій відповіді, прийнята відповідь спрацює, і це альтернатива. Відмінність цього методу від його користувальницького інтерфейсу полягає в тому, що він буде працювати в декількох середовищах, але вам доведеться встановлювати його індивідуально в інтерфейсі для кожного середовища.
шим

16

Важливо розуміти, що проблема дозволів може існувати ВІД вказаного тимчасового каталогу (який визначено в адміністраторі / конфігурації / медіа / файловій системі) І в папці, куди буде скопійовано цей тимчасовий файл. Я кілька разів бачив цю помилку, і це, як правило, не проблема з тимчасовою папкою, а кінцева папка, куди цей файл копіюється після проживання у папці temp.

Також переконайтесь, що шлях публічної файлової системи встановлений правильно.


1
Так було і для мене. У моєму випадку мені потрібно було встановити право власності на новостворений каталог / сайтів / за замовчуванням / файлів на USERNAME: apache (у деяких системах ця група називалася б ніхто).
Еван Донован

8

У мене була така точна проблема, і я переконався, що використовую відносний шлях (сайти / за замовчуванням / файли / tmp) для розташування моєї папки tmp, як було запропоновано, і я також змінив дозволи на папку tmp, щоб переконатися, що вона могла писати apache, але моя проблема все ще існувала . тому я вирішив перевірити повідомлення журналу (Звіти >> Останні повідомлення журналу), щоб побачити, чи можу я краще зрозуміти, у чому проблема. Роблячи це, я отримав більш конкретне повідомлення:

Не вдалося встановити права доступу до файлу public: // js.

Це спонукало мене перевірити дозволи на папку js на сайтах / за замовчуванням / файлах, і, як виявляється, apache не міг писати до неї, змінивши дозволи на 775 у цій папці, я позбувся свого повідомлення про помилку. Тому я б запропонував вам перевірити дозволи для всіх підпапок на сайтах / default / файлах, а не лише в папці tmp, якщо ви ще не вирішили свою проблему. Просто думав, що я поділюся цією інформацією.


Моя проблема була такою ж, як і ця, але для її виправлення я використовую таке: sudo chgrp -R www-data / var / www / mysite
Wavesailor

Припустимо, що ви поєднуєтесь sudo chgrp -R www-data /var/www/mysiteіз "зміною дозволів на 775" . Це НЕ потрібно. Drupal не потрібно писати у кожну папку. Лише ваші загальнодоступні, приватні папки та файли tmp.
rovr138

Так - найважливішим тут є те, що жодної іншої відповіді не згадується - це пошук місця призначення (як правило, десь під сайтами / за замовчуванням / файлами - / css та / js є головними кандидатами, якщо у вас включено конкатенація JS / CSS), і ви можете отримати це лише переглянувши журнал.
Вільям Террелл

... * однак * - мітка у формі адміністратора говорить "Цей каталог не повинен бути доступний через Інтернет", тому, якщо ви не вжили заходів для захисту / сайтів / за замовчуванням / файлів / tmp в Apache або Nginx, а потім поклавши його є погана ідея.
Вільям Террелл

5

ви можете знайти налаштування файлової системи, admin/config/media/file-system змінивши її на / tmp

також ви можете перевірити адміністратора / звітів / стану на наявність будь-яких проблем із налаштуваннями

about / tmp дозволу, ви можете надати 755, і ви знайдете його в / public_html


2

Повідомлення про помилку може колись вводити в оману

Якщо він говорить про те, що проблема пов'язана з каталогом призначення, у апачі, ймовірно, немає дозволів писати в підпапку сайтів / за замовчуванням / файли, в які Drupal хоче вставити файл.

Гарне рішення - зробити користувача apache власником усіх файлів і каталогів під сайти / default / файли

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

Або щось подібне повинно перенести проблеми з каталогом призначення. Переконайтесь, що власник має права на запис та виконання у всіх підкаталогах.


1
Це рішення врятувало мені день, я працюю над Ubuntu 14.014 і зробив цеchown -R www-data:www-data /var/www/html/sites/default/files/
Rishi Kulshreshtha

2

Каталог файлів: Усунення неполадок веб-серверів на базі Apache

Якщо файли каталогів не належать веб-серверу, існують два способи. Ці інструкції передбачають, що у вас є доступ до оболонки на веб-сервері. Якщо у вас немає доступу до оболонки, зв’яжіться зі своїм постачальником хостингу для отримання додаткової підтримки.

В ідеалі ви зможете змінити "власника" файлів каталогів відповідно до імені веб-сервера. На сервері на базі Unix або Linux ви можете перевірити, "ким" працює веб-сервер, видавши наступні команди:

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

Залежно від вашого веб-сервера одна з цих команд поверне такий ряд рядків:

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

Перший стовпець у поверненому тексті - це "користувач", яким працює ваш веб-сервер. У цьому випадку користувачеві є www-data. Щоб зробити ваш каталог файлів доступним для веб-сервера, вам потрібно перепризначити його право власності за допомогою наступної команди:

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

Якщо у вас недостатньо дозволів на вашому сервері, щоб змінити право власності на папку, наступним найкращим варіантом є надання доступу для запису групи в папку за допомогою наступної команди:

$ chmod -R 0770 sites/default/files

Ви також повинні мати можливість налаштувати дозволи для каталогу за допомогою програми FTP, як зазначено вище.

Після виконання цих кроків підтвердьте, що відповідні дозволи були призначені, перейшовши до Адміністратора -> Звіти -> Звіт про стан. Перейдіть до розділу "Файлова система" та переконайтесь, що ваші налаштування правильні.

Джерело: Каталог файлів


1

Іншим джерелом помилок є те, що він не може записатись у папку файлів. У моєму випадку я вирішив це за допомогою:

$chmod 777 sites/default/files/pictures/

15
Воа, справді? 777 на чому явно виробничий сайт? Це просто безвідповідальна порада.
Девід Мейстер

Так, принаймні 755.
user1359

@DavidMeister Я запросив вас, але, на жаль, на спільному хостингу (блювота) іноді 777 - це єдиний спосіб, коли Apache може писати в папку

@andrewtweber Ви впевнені в цьому? Навіть у спільному хостинг-середовищі 775 повинен бути приблизно таким же вільним, як вам потрібно. Чи можете ви надати приклад спільного хостинг-провайдера, який вимагає 777? Якщо ви використовуєте 777 на спільному сервері і у вас немає VPS, усі інші сервери можуть отримати доступ до ваших файлів.
Девід Мейстер

3
@andrewtweber також так, урок полягає не в тому, що для "спільного хостингу" потрібно 777, а для "жахливого хостингу" потрібно 777.
Девід Мейстер

1

У деяких ситуаціях це можна легко виправити, видаливши папки 'ctools' та 'js' у файлах за замовчуванням / файлами. Ці папки відтворюються системою за потреби. Іноді під час нової інсталяції існуючого сайту ці папки, що існують, вже створюють проблеми. Крім того, якщо ваш CSS не працює після створення нової інсталяції існуючого сайту, це також можна виправити, видаливши ці файли та надавши можливість Drupal відтворити їх.


0

Моя стара і проблемна конфігурація

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

Моя нова та чудова конфігурація

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

Так, виконувати потрібно для папок, щоб мати можливість їх використовувати. 775, ймовірно, буде більш доцільним, ніж 774. У вашому випадку з способом встановлення вашої власності 755 також буде хорошим варіантом.
rooby

0

Правильні дозволи для тимчасової папки залежать від конфігурації вашого веб-сервера.

Якщо ви використовуєте Drupal з PHP як модуль веб-сервера, наприклад Apache, коли користувач, який визначений у головному файлі конфігурації веб-сервера за допомогою директиви користувача, повинен мати доступ до нього.

% grep -i "користувач" /etc/httpd/conf/httpd.conf

Користувач apache


0

У мене була ця сама проблема після переходу з одного сервера на інший.

Я спробував усе, що тут пропонується, встановивши папки на 755 тощо.

У моїй тимчасовій папці було встановлено значення "" tmp7zXhVVCO ", і вона фактично прекрасно скопіювала інсталяційні файли, після кожного повтору я бачила, що там копіюється тимчасовий файл, але установка не працює.

Однак проблема полягає не в власниках прав, тому 777 усуває цю помилку, але всі ми знаємо, що це не спосіб перейти на виробничі майданчики.

Що ви повинні зробити, це змінити свою тимчасову папку на будь-що інше, наприклад, на "темп" або що завгодно, якщо вона ще не існує , drupal створить цю нову папку з правами apache , а не правами користувача та вашою проблемою. вирішиться.


Коли я це роблю, я отримую помилкуThe directory ../temp2 does not exist and could not be created.
Пол Троттер

0

Мені не дуже подобається жодна з існуючих відповідей, тому я просто збираюся почати свою, яку я, мабуть, оновитиму з часом. В основному з командами оболонки.

Поки що запустіть це з 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

0

З налаштування -> Медіа -> Файлова система я видалив / temp-каталог. Після цього у мене не було жодних проблем.


0

У мене було таке ж питання щодо міграції. У мене є chmod 777 на всіх сайтах / за замовчуванням / файлах, але помилка все-таки трапляється. Я змінюю дозвіл 775 на сайтах / за замовчуванням / файли та повідомлення зникли. У мене не була проблема приватного шляху, моя / var / tmp, але дозвіл 775.


0

Якщо ви зіткнулися з цією проблемою за допомогою Pantheon і продовжуєте отримувати помилку після встановлення шляхів (-ів) файлів (temp) файлів, вам також може знадобитися переключити режим підключення на інформаційній панелі примірника програми з Git на SFTP.

Ваш Drupal-сайт, можливо, намагається зберегти файли до каталогу, керованого Git (наприклад, якщо ви змінюєте налаштування макета тощо) у темі "Адаптивна тема"). Для цього перейдіть на SFTP. Після збереження файлів ви можете перейти назад до Git, і приладова панель запропонує вам здійснити зміни, внесені на сервер.


0

У мене була така ж проблема.

Я використовував IIS в Windows. Нарешті, проблема полягала в дозволах на сайтах папок / default / файлів і, очевидно, у сайтах / default / files / tmp.

Нарешті я знову дав "Повні дозволи" папкам, і це спрацювало.

З повагою

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.