Де створюються тимчасові файли?


12

Хочу знати, де Drupal (або його модулі) створюють тимчасові файли. Чи розміщуються вони на сайтах / за замовчуванням?

Я особливо говорю про Drupal 6.


Модулі можуть спробувати створити тимчасові файли будь-де на сайті drupal, але досягти успіху буде лише там, де це дозволяє конфігурація сервера. Дивіться: drupal.org/node/244924
серпень1914

Відповіді:


16

Файли створюються в каталозі, ім'я якого повертається з file_directory_temp (), який повертає:

  • Значення змінної Drupal "file_temporary_path", яке задається на сторінці налаштування в адміністраторі / конфігурації / медіа / файловій системі (Drupal 7) або адміністраторі / налаштуваннях / файловій системі (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_temporary_path" не встановлена, а каталоги, які я вказав у попередньому пункті, не існують або не підлягають запису, функція використовує значення змінної Drupal "file_public_path"; за замовчуванням цей каталог має значення, conf_path() . '/files'яке є каталогом "файли", що міститься в каталозі, що містить файл setting.php, який використовується для сайту Drupal.

Функція встановила змінну "file_temporary_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

Сторінка налаштувань в адміністраторі / налаштуваннях / файловій системі містить налаштування для каталогу, який використовується для тимчасових файлів.

Деякі модулі можуть вибрати інший каталог для тимчасових файлів. Немає стандартного розташування папок.

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


Ви хочете сказати, що модуль може створювати темп-файл у будь-якому місці на drupal-сайті? Чи може він також створювати в root / теми root / модулі тощо?
AgA

Так, модулі можуть створювати тимчасові файли в будь-якому місці. Зазвичай вони зберігають їх в одній папці, як і ctools. З мого досвіду модулі, які створюють власну тимчасову директорію, трапляються рідко. Більшість модулів використовує тимчасовий каталог за замовчуванням, про який говорить Кріс.
iStryker

@iStryker Сьогодні я побачив помилку в тому розділі звітів / статусу мого веб-сайту: "Каталог файлів не захищений" і запропонував drupal.org/forum/newsletters/… створити .htaccess у каталозі файлів, а також поставити "Заборонити від все "in .htaccess знайдено у каталозі тимчасових файлів для запобігання виконанню коду. Я збентежений. Це папка 'tmp', десь або кожен модуль має власну папку? Чи повинен я розміщувати .htaccess файл у кожну папку?
Умаїр
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.