MantisBT - выбор места хранения файлов вложений

В MantisBT можно выбрать 2 способа хранения файлов вложений, которые прикрепляются к заданиям (Issue): БД или файловая система. В более старых версиях Mantis 1.2.x существовал еще и третий способ хранения, FTP, но в документации для 1.3.x об этом месте хранения уже не упоминается.

Изменить место хранения загруженных файлов с DISK на DATABASE и обратно для MantisBT с уже существующими вложениями можно при помощи утилиты, поставляемой вместе Mantis`ом. Она расположена тут: admin/system_utils.php. Перед этим нужно ОБЯЗАТЕЛЬНО сделать резервную копию!

Информация о файле: имя, тип и другая информация хранится в таблице БД с именем PREFIX_bug_file_SUFIX. Если в качестве хранилища файлов выбрана БД, то в этой таблице в колонке content сохраняется содержимое файла.

По умолчанию, MantisBT хранит приложенные файлы в БД. Это не самый лучший вариант, с точки зрения производительности. Также, в этом случае, может возникнуть проблема с хранением одного большого файла таблицы, размер которого может превысить допустимый размер файловой системы, но это произойдет только в случае, если к проектам прилагается много файлов и большинство из них занимают много места. Но исходя из того, как организован способ хранения файлов на диске, хранение файлов в БД - становится лучшим вариантом, ниже описаны причины, послужившие для такого вывода.

Настройки места хранения загружаемых файлов (вложений) и дополнительные параметры записываются в главный конфигурационный файл: config/config_inc.php (в версиях MantisBT < 1.2.19 файл config_inc.php расположен в корневой директории проекта). Для смены места хранения файлов вложений используется переменная $g_file_upload_method, в качестве значения которой могут использоваться 2 константы: DISK и DATABASE (по умолчанию, если $g_file_upload_method не записана в config_inc.php). Поскольку значение для $g_file_upload_method - константа, записывать его нужно без кавычек, например так:

$g_file_upload_method = DISK;

После внесения и записи изменений в конфигурационный файл в настройках каждого проекта появится отдельное поле для ввода пути к хранилищу файлов: "Путь для загружаемых файлов" ("Upload File Path"). Путь желательно вносить полный, от корня директории, например: /home/www/example.com/uploaded_files/ProjectName. Также нужно создать 2 директории: uploaded_files и в этой новой директории создать поддиректорию ProjectName. Для каждого проекта нужно создавать свою директорию ProjectName вручную.

После этих изменений хранение файлов на диске будет работать.

Папку для хранения прикрепленных файлов можно разместить как за пределами доступа Web-сервера, так и, например, в корневой директории Мантис, безопасность от этого не пострадает. При записи файла на диск, Mantis присваивает файлу произвольное имя, например: 2a5dbb77b09ccbfc0a81cd84970af3e1, а доступ к файлу осуществляется через скрипт file_download.php. В HTML путь к предпросмотру изображения выглядит примерно так:

<img src="file_download.php?file_id=1&type=bug&show_inline=1&file_show_inline_token=20170303kblQi7IknknPCXl123GBtT2w-fafrb4A3" alt="" style="border: 0; max-height:250px;">

Путь для загрузки - так:

<a href="file_download.php?file_id=2&type=bug"><i class="fa fa-file-o" alt="? file icon" width="16" height="16"></a>

Исходя из этих данных можно сделать вывод, что если директория с загружаемыми файлами доступна из Web, доступ к ней для дополнительной безопасности можно закрыть с помощью .htaccess (Apache web-server). Также, скорее всего, файлы разных проектов можно хранить в одной директории, но это плохая стратегия для структуры хранилища.

Но смена места хранения приложенных файлов на файловую систему (DISK) тянет за собой ряд сложностей, которые будут постоянно возникать при работе с Мантис:

  1. Для каждого НОВОГО проекта нужна отдельная директория, которую нужно ВРУЧНУЮ создавать отдельно для каждого проекта. Это действие производится в настройках проекта. Если директория не существует - выводится сообщение об ошибке.
  2. В случае смены директории, домена или других изменений в путях файлов проекта, придется ВРУЧНУЮ изменять пути для ВСЕХ проектов. В случае переноса Mantis на другой хостинг - нужно тратить много времени на настройку.
  3. При любых операциях с файлами Mantis, в том числе резервном копировании, нужно помнить о том, что вложения находятся в отдельной директории(ях).
  4. Вручную нужно следить, чтобы кол-во файлов в одной директории не превысило определенное кол-во, для избежания "тормозов" при чтении файлов. Также, если файлов будет очень много, могут возникнуть проблемы с inodes.

Взвесив отрицательные стороны и достоинства каждого способа хранения прикрепленных файлов в Mantis напрашивается вывод, что лучшее место для этого - база данных, как ни странно это звучит на первый взгляд.

Настройки для загружаемых файлов

Ниже будут описаны только те настройки, которые не достаточно описаны в официальной документации. Описание всех доступных настроек для загружаемых файлов можно найти в официальной документации: Mantis BT Admin Guide (eng) и файле с настройками по умолчанию с именем config_default_inc.php (расположен в корневой директории Mantis).

Максимальный размер загружаемого файла - $g_max_file_size

Максимальный размер загружаемого файла задается целым числом в байтах в переменной $g_max_file_size. Чтобы изменить значение по умолчанию с 5Mb до 7Mb, нужно присвоить переменной значение 7340032 (в 1КБ содержится 1024Б).

Включение/отключение поля для перетаскивания загружаемых файлов - $g_dropzone_enabled

Параметр $g_dropzone_enabled влияет только на то, что будет или не будет работать специальная зона, в которую можно перетаскивать вложения. Значения: ON (по умолчанию) или OFF - константы. Если установить $g_dropzone_enabled = OFF, то загружать файлы можно будет по старинке, путем нажатия кнопки: "Выберите файл".

Опубликовано: 2017/03/03
HTML-код ссылки на эту страницу:
<a href="http://petrenco.com/raznoe.php?txt=705" target="_blank">MantisBT - выбор места хранения файлов вложений</a>
167
Добавить комментарий
Ваш e-mail: (не виден посетителям сайта)
Ваше имя:
Комментарий:
Символы с картинки:
Только выделенные поля формы добавления комментариев обязательны к заполнению.