ВСЕ ЗАПИСИ
Статьи,заметки
File Thingie - файловый менеджер для сайта
File Thingie официальный сайт это небольшой менеджер файлов на php, его можно установить на свой сайт в качестве независимой панели управления файлами, в дополнение к той, которую предоставляет хостинг-провайдер. Его возможности:
- Одновременная загрузка очереди файлов на сервер
- Создание пользователей/групп с разными правами доступа
- Создание субдиректорий
- Переименование,копирование, удаление файлов и папок
- Поиск файлов/папок
- Редактирование файлов текстовых форматов
- Распаковка zip архивов на сервере
- Установка прав доступа на файлы/папки (chmod)
- Создание символьных ссылок
Я давно собирался попробовать в работе этот скрипт, и вот наконец..
Для начала распаковываем 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)
Предлагаем рассмотреть наше встречное предложение Отправка вашего сообщения в более чем 1 000 000 форм обратной связи России и СНГ только до 9 мая - 3000 р Письмо приходит на электронный ящик организации 100% во входящие! Ваше сообщение увидят администраторы сайтов, менеджеры и руководители! Отличная реклама Ваших товаров и услуг! Гарантии и отзывы. Контакты: 2018form @inbox.ru(убрать пробелы) Telegram: @form2018 Skype: 2018form
добавлено: 03.05.18 12:27
Обновить
Powered by ©Veterock Studio 2013