Где создаются временные файлы?


12

Я хочу знать, где Drupal (или его модули) создают временные файлы. Они помещены в сайты / default?

Я особенно говорю о Drupal 6.


Модули могут попытаться создать временные файлы в любом месте сайта drupal, но это будет успешно, только если это позволяет конфигурация сервера. См: drupal.org/node/244924
August1914

Ответы:


16

Файлы создаются в каталоге, имя которого возвращается из file_directory_temp (), который возвращает:

  • Значение переменной Drupal "file_teilitary_path", которая задается на странице настроек в admin / config / media / file-system (Drupal 7) или admin / settings / file-system (Drupal 6).

  • Если эта переменная Drupal не установлена, то функция проверяет один из следующих каталогов; если один из этих каталогов существует, то он возвращается (и используется).

    • каталог, возвращенный из ini_get('upload_tmp_dir')
    • в Windows каталоги "c: \ windows \ temp" и "c: \ winnt \ temp."
    • в ОС, отличной от Windows, каталог «/ tmp».
    • в PHP версии 5.2.1 или выше, каталог возвращается sys_get_temp_dir().
  • Если переменная "file_teilitary_path" не установлена, а каталоги, которые я перечислил в предыдущем пункте, не существуют или недоступны для записи, функция использует значение переменной Drupal "file_public_path"; по умолчанию этот каталог имеет значение, conf_path() . '/files'которое является каталогом «files», содержащимся в каталоге, содержащем файл setting.php, используемый для сайта Drupal.

Функция устанавливает переменную "file_teilitary_path" в каталог, который она нашла.

Насколько я знаю, любой модуль открывает временные файлы, используя путь, начинающийся с «временного: //» (доступно только в Drupal 7 и выше) или использует file_directory_temp(). Каталог, возвращаемый из, file_directory_temp()может меняться от системы к системе, но модули всегда используют этот каталог.

Модули Drupal не имеют права писать каталог, содержащий модули; довольно сложно модуль использует этот каталог для создания временных файлов. Если вы найдете модуль, который использует каталог, содержащий модули (или любой подкаталог этого каталога), сообщите об этом как об ошибке.


Ваш ответ применим к Drupal 6 или только к Drupal 7?
iStryker

1
Это относится и к обоим, как file_directory_temp()определено в Drupal 6, и код функции не меняется при переходе от Drupal 6 к Drupal 7.
kiamlaluno

3

Страница настроек в admin / settings / file-system содержит настройки для каталога, используемого для временных файлов.

Некоторые модули могут выбрать другой каталог для временных файлов. Там нет стандартного расположения папок.

Например, модуль ctools создаст временные кэшированные файлы в каталоге / sites / default / files / ctools. Так что это может отличаться.


Вы говорите, что модуль может создать временный файл в любом месте сайта drupal? Это может также создать в корне / темах корень / модули и т.д?
AgA

Да, модули могут создавать временные файлы где угодно. Они обычно хранят их в одной папке, как и ctools. Из моего опыта создания модулей создание собственного временного каталога редко. В большинстве модулей используется временный каталог по умолчанию, о котором говорит Крис.
iStryker

@iStryker Сегодня я увидел ошибку в разделе отчетов / статуса моего сайта, в которой говорилось, что «каталог файлов не защищен», и предложил drupal.org/forum/newsletters/… создать .htaccess в каталоге файлов, а также поставить «Запретить от все "в .htaccess находится в каталоге временных файлов для предотвращения выполнения кода. Я запутался. Это папка 'tmp', где каждый модуль имеет свою папку? Нужно ли помещать файл .htaccess в каждую папку?
Umair
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.