ВСЕ ЗАПИСИ

Статьи,заметки

File Thingie - файловый менеджер для сайта

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

Я давно собирался попробовать в работе этот скрипт, и вот наконец..

Для начала распаковываем File Thingie в отдельную папку, которая будет лежать у нас в корне сайта. Переименовываем файл config.sample.php в config.php. Открываем его и задаём логин и пароль администратора здесь:

define("USERNAME", ""); // Your default username.
define("PASSWORD", ""); // Your default password.
(вписываем в кавычки)

Другие настройки, которые нужно задать в первую очередь:

$ft["settings"]["DIR"] домашняя директория, задаём от корня сайта, если папка File Thingie расположена в корне, то следует поставить "../"

$ft["settings"]["MAXSIZE"] макс. размер загружаемых файлов в байтах, по умолчанию 2000000, можно дописать пару нолей про запас, но не больше того, что прописано в php.ini, отправка файлов в скрипте производится через форму.

$ft["settings"]["DELETEFOLDERS"] рекомендуется TRUE, чтобы можно было удалять непустые папки

$ft["settings"]["SHOWDATES"]рекомендуется изменить на TRUE

$ft["settings"]["FILEBLACKLIST"] в кавычках перечислены названия файлов, которые будут невидимы для File Thingie, рекомендуется удалить этот список, оставить просто пустые кавычки, для снятия всех ограничений

$ft["settings"]["FOLDERBLACKLIST"] список директорий, невидимых для File Thingie, оставить пустые кавычки, для снятия всех ограничений

$ft["settings"]["FILETYPEBLACKLIST"] список запрещенных к загрузке файлов, если скрипт будет использоваться как панель управления на сайте, можно удалить все из этого списка, чтобы снять ограничения

$ft["settings"]["FILETYPEWHITELIST"] "белый список" файлов, убрать все, чтобы снять ограничения

$ft["settings"]["ADVANCEDACTIONS"]рекомендуется изменить на TRUE

Фрагмент кода в config.php

$ft["plugins"]["edit"] = array(
"settings" => array(
"editlist" => "txt html htm css",

отвечает за типы файлов, которые будут доступны для редактирования в File Thingie, его рекомендуется расширить, добавив туда через пробел другие форматы, напр. php, xml, ini и пр. В директории plugins, в файлах edit.plugin.php, editorck.plugin.php, fckeditor.plugin.php, tinymce.plugin.php также есть код, где перечислены форматы для редактирования, туда я тоже дописал нужные мне файлы.

Когда я установил и настроил File Thingie, на первый взгляд показалось что все замечательно работает. Но оказалось, это не совсем так, - при попытке, что-либо загрузить, через встроенную форму, выдается такое сообщение

Warning: preg_match() [function.preg-match]: Unknown modifier '\' in /var/sites/d/domainname/public_html /folder/ft2.php on line 113
Warning: Cannot modify header information - headers already sent by (output started at /var/sites/d/domainname/public_html /folder/ft2.php:113) in
/var/sites/domainname/public_html /folder/ft2.php on line 1525

в результате,- любой файл отказывается загружаться.

Скрипт проверялся на windows и linux серверах, на разных типах файлов, с названиями в стандартных и нестандартных кодировках, результат везде одинаковый - upload fail.

Но в конце-концов мне удалось найти решение, в главной странице скрипта, в этом фрагменте кода

function ft_validate_filename($file)
{
// Make sure the file doesn't start with a period, contain unwanted characters, or end in a period.
$pattern = '^[^\.]((\.)?(([\w~!]){1,}))+$';
$result = preg_match($pattern, $file);
return $result;
}

строку, которую я выделил красным, заменяем вот этим регулярным выражением:

$pattern = '@^(?!\..*)(?!.*\.\.)(?=.*[^.]$)[^\"#%&*:<>?\\/{|}~]{1,128}$@';

Это исправляет ошибку, теперь загрузка работает (но в названии файла не должно быть более 128 символов)

Дальнейшее использование скрипта показало, что неплохо было бы ещё что-то сделать с кодировкой в режиме редактирования, - скрипт использует utf-8, и при открытии файлов , созданных на кириллице в формате windows, вместо текста отображаются квадратики.

Я нашел, что кодировка, определяется выводом заголовка здесь

session_start();
header("Content-Type: text/html; charset=UTF-8");
header("Connection: close");

если заменить на header("Content-Type: text/html; charset=WINDOWS-1251");

то кириллица windows будет отображаться нормально, но соответственно сломается текст в utf-8. У меня на сайте имеются документы в обеих кодировках, хотелось чтобы скрипт мог работать с любой из них. Самый простой способ - это использовать две разные страницы, настроенные каждая на свой режим, и переключаться между ними при необходимости. Но я решил усложнить задачу и немного доработал File Thingie, теперь между кодировками можно переключаться на лету, для этого используется дополнительная панелька. Правда, все равно пришлось добавить в скрипт буферную страничку, которая записывает текущее значение режима работы в сессию. За счет универсальности, пришлось также отказаться от возможности переключения языка интерфейса, если активировать режим WINDOWS-1251 при выбранном русском языке интерфейса, то все надписи на русском превратятся в нечитаемые каракули. Была мысль сделать автоматическое переключение на английский при выборе WINDOWS-1251, и возврат на русский при включении UTF-8, но оказалось что в File Thingie файлы локализации подключаются через include_once() поэтому переключать язык на лету без серьёзной переделки логики скрипта не получится. Наличие русской локализации для меня некритично, поэтому я оставил английский по умолчанию, а папка locales была удалена полностью. Также,как невостребованная, была удалена папка tablesorter из директории plugins.

Скрипт с исправленными ошибками, без лишних файлов можно скачать отсюда Его следует поместить в корень сайта, либо изменить путь в настройках домашней директории, если он будет лежать во вложенных папках, также желательно изменить название папки скрипта на любое другое. По умолчанию, логин: admin, пароль:pass, не забудьте сменить перед загрузкой на сервер! В список редактируемых файлов уже внесены самые распространенные форматы, добавьте туда свои варианты, которые вам нужны. Если вы будете проверять работу скрипта на локальном windows-сервере, напр., Денвер, следует учесть, что распаковка zip там скорее всего работать не будет, но на реальном хостинге всё работает, - проверено

Другие файловые менеджеры можно скачать здесь

Добавлено: ноябрь 2014

©Veterock




комментарии (1)



написал Bobbypaync
Предлагаем рассмотреть наше встречное предложение Отправка вашего сообщения в более чем 1 000 000 форм обратной связи России и СНГ только до 9 мая - 3000 р Письмо приходит на электронный ящик организации 100% во входящие! Ваше сообщение увидят администраторы сайтов, менеджеры и руководители! Отличная реклама Ваших товаров и услуг! Гарантии и отзывы. Контакты: 2018form @inbox.ru(убрать пробелы) Telegram: @form2018 Skype: 2018form
добавлено: 03.05.18 12:27
Имя

Сообщение

введите защитный код


Обновить

Powered by ©Veterock Studio 2013