Настройка временного каталога

48

Я недавно переместил сайт с локального хоста на VPS. Мне удалось сделать общедоступные и личные файлы доступными для записи; Однако я не уверен, где найти временную папку и как изменить разрешения. Я продолжаю получать это сообщение:

Указанный файл временный: // file3Hl91E не может быть скопирован, поскольку целевой каталог неправильно настроен. Это может быть вызвано проблемой с правами доступа к файлам или каталогам. Более подробная информация доступна в системном журнале.

Я использую VirtualMin, Drupal 7 и сервер Debian. Мой текущий временный каталог /tmp.

Жасмин ахмед
источник

Ответы:

46

Проверьте Administrator -> Configuration -> Media -> File System, чтобы персонализировать ваш путь tmp. Убедитесь, что вы используете относительные пути и имеете необходимые права для пользователя Apache.

Мне лично нравится эта статья, исправляющая загрузку файла . У него хорошие наблюдения. Это сработало для меня.

Недавно я загрузил свой сайт на компьютер Mac. Бывает, что на моем Mac я использовал mod_userdirApache и забыл, что /etc/apache2/users/nameofuser.confмне нужно установить AllowOverride All, иначе у меня будет следующее сообщение:

Указанный временный файл не может быть скопирован, поскольку каталог назначения не настроен должным образом.

cayerdis
источник
Ссылка не работает
pal4life
ссылка вернулась !! автор любезно вернул сайт!
Кайердис
2
Было бы хорошо добавить в ответ обобщение этих «наблюдений».
фифи финанс
4
Ссылка снова не работает.
Кари Kääriäinen
17

В твоих settings.php

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

Это будет работать на Unix-системах в 99% случаев.

Обычно каталог / tmp существует в системах UNIX с открытыми разрешениями, он существует специально для временных файлов и часто настраивается для повышения производительности.

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

Если вы заинтересованы в дальнейшем чтении по этому вопросу, см. Https://en.wikipedia.org/wiki/Teilitary_folder

Хим
источник
1
На мой взгляд, это не очень хороший ответ. Там нет никаких объяснений, и, вероятно, не будет работать, если /tmpне имеет необходимых разрешений. Это даже противоречит принятому ответу (который сам по себе тоже не велик).
фифи финанс
Я не думаю, что ответ требует большого объяснения, я бы сказал, что переменная $ conf работает в settings.php - это общие знания для разработчиков Drupal. Одним из приятных моментов в этом ответе является то, что он лаконичен. Я не уверен, что это противоречит принятому ответу, принятый ответ будет работать, и это альтернатива. Разница между этим методом и выполнением его через пользовательский интерфейс заключается в том, что он будет работать в нескольких средах, но вам придется установить его индивидуально в пользовательском интерфейсе для каждой среды.
звон
16

Важно понимать, что проблема с разрешениями может существовать в ОБА указанном вами временном каталоге (который определен в admin / config / media / file-system) И в папке, куда будет скопирован этот временный файл. Я видел эту ошибку несколько раз, и обычно она связана не с временной папкой, а с последней папкой, куда копируется этот файл после того, как он находится во временной папке.

Также убедитесь, что путь к публичной файловой системе задан правильно.

sheldonkreger
источник
1
Это был случай для меня. В моем случае мне нужно было установить для владельца только что созданного каталога / sites / default / files значение USERNAME: apache (в некоторых системах эта группа не называлась никому).
Эван Донован
8

У меня возникла именно эта проблема, и я использовал относительный путь (sites / default / files / tmp) для расположения моей папки tmp, как было предложено, и я также изменил разрешения для папки tmp, чтобы обеспечить возможность записи с помощью apache, но моя проблема все еще существует , поэтому я решил проверить сообщения журнала (Отчеты >> Последние сообщения журнала), чтобы увидеть, смогу ли я лучше понять, в чем проблема. Делая это, я получил более конкретное сообщение:

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

Это побудило меня проверить разрешения для папки js в sites / default / files, и, как оказалось, apache не мог писать в нее, поэтому, изменив разрешения на 775 для этой папки, я избавился от своего сообщения об ошибке. Поэтому я бы посоветовал вам проверить разрешения для всех подпапок в sites / default / files, а не только для папки tmp, если вы еще не решили свою проблему. Просто подумал, что поделюсь этой информацией.

Andew
источник
Моя проблема была такой же, как эта, но я использую следующее, чтобы исправить это: sudo chgrp -R www-data / var / www / mysite
Wavesailor
Предполагая, что вы объединяетесь sudo chgrp -R www-data /var/www/mysiteс «изменением разрешений на 775» . Это НЕ нужно. Drupal не нужно писать в каждую папку. Только ваши публичные, приватные и tmp файлы.
rovr138
Да, главное, что здесь не упоминается никакой другой ответ, - это найти каталог назначения (обычно где-то в сайтах / default / files - / css и / js являются основными кандидатами, если у вас включена конкатенация JS / CSS), и вы можете только получить это, просмотрев журнал.
Уильям Туррелл
… * Однако * - ярлык в форме администратора гласит: «Этот каталог не должен быть доступен через Интернет», поэтому, если вы не предприняли шаги для защиты / sites / default / files / tmp в Apache или Nginx, а затем поместили его плохая идея
Уильям Туррелл
5

вы можете найти настройки файловой системы, admin/config/media/file-system изменив его на / tmp

также вы можете проверить администратор / отчеты / статус для любой проблемы настроек

о разрешении / tmp вы можете дать ему 755 и вы найдете его в / public_html

Ahmed
источник
2

Сообщение об ошибке может вводить в заблуждение

Если говорится, что проблема связана с целевым каталогом, то у apache, вероятно, нет прав на запись в подпапку sites / default / files, в которую Drupal хочет поместить файл.

Хорошее решение - сделать пользователя apache владельцем всех файлов и каталогов в sites / default / files

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/
Риши Кулшрештха
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' внутри default / files. Эти папки воссоздаются системой при необходимости. Иногда при новой установке существующего сайта существующие папки уже вызывают проблемы. Кроме того, если ваш 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 также будет хорошим вариантом.
Роби
0

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

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

% 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-каталог. После этого у меня не было никаких проблем.

Filip
источник
0

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

Дерево
источник
0

Если вы столкнулись с этой проблемой с помощью Pantheon и продолжаете получать сообщение об ошибке после установки пути (каталогов) файлов (temp), вам также может потребоваться переключить режим подключения на панели мониторинга экземпляра dev с Git на SFTP.

Ваш сайт Drupal может пытаться сохранить файлы в каталоге, управляемом Git (например, если вы меняете настройки макета и т. П. В теме Adaptive Themes). Для этого переключитесь на SFTP. После того, как файлы были сохранены, вы можете переключиться обратно на Git, и приборная панель предложит вам зафиксировать изменения, сделанные на сервере.

Кей V
источник
0

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

Я использовал IIS в Windows. Наконец, проблема была с разрешениями в папке sites / default / files и, очевидно, в sites / default / files / tmp.

Наконец я снова дал «Полные права» на папки, и это сработало.

С уважением

jorge_vicente
источник