Установка и настройка CKFinder

mbaev 10.01.2015, 18:11

Мне показалась интересной задача настройки файлового браузера CKFinder (в связке с текстовым редактором CKEditor). При устновке с первого раза "что-то пошло не так" и пришлось немного разобраться. Хотя материала на эту тему достаточно, но русскоязычного топика я не нашел.

Установим модуль

Распаковать все это нужно следующим образом

  1. sites
  2.  |-all
  3.  |  |-modules
  4.  |  |  |-ckeditor     <- это папка модуля ckeditor
  5.  |  |  |  |-ckeditor  <- это папка плагина ckeditor
  6.  |  |  |  |  |-adapters
  7.  |  |  |  |  |...
  8.  |  |  |  |-ckfinder  <- это папка плагина ckfinder
  9.  |  |  |  |  |-_samples
  10.  |  |  |  |  |...
  11.  |  |  |  |...

P.S.: вообще-то есть и другие способы распаковки, но рассмотрим только этот.

Нюансы

После включения модуля CKEditor у вас появится страница настроек (admin/config/content/ckeditor) модуля CKEditor, но CKFinder не заработает. Потому, что нужно:

  1. в файле sites/all/modules/ckeditor/ckfinder/config.php закомментировать функцию CheckAuthentication(). Вот так:
    1. //function CheckAuthentication()
    2. //{
    3. //  // WARNING : DO NOT simply return "true". By doing so, you are allowing
    4. //  // "anyone" to upload and list the files in your server. You must implement
    5. //  // some kind of session validation here. Even something very simple as...
    6. //
    7. //  // return isset($_SESSION['IsAuthorized']) && $_SESSION['IsAuthorized'];
    8. //
    9. //  // ... where $_SESSION['IsAuthorized'] is set to "true" as soon as the
    10. //  // user logs in your system. To be able to use session variables don't
    11. //  // forget to add session_start() at the top of this file.
    12. //
    13. //  return false;
    14. //}
  2. там же нужно найти строку
    1. $baseDir = resolveUrl($baseUrl);
    и вставить после неё
    1. require_once '../../../../includes/filemanager.config.php';
    P.S.: Путь должен быть именно таким хотя, изначально кажется, что он должен быть "../includes/filemanager.config.php"
  3. в вашем settings.php прописать переменную $cookie_domain (сейчас это строка 340). Например:
    1. $cookie_domain = 'http://bithaven.ru';

Еще здесь рекомендуют прописать переменную $base_url, но у меня и без неё все заработало.

Все готово, остается сделать 2 шага:

  1. Дать права на использование файлового менеджера CKFinder на странице admin/people/permissions
    drupal_7_enterprise_ckfinder_permission.png
  2. Назначить CKFinder файловым менеджером в настройках CKEditor'а
    drupal_7_os_enable_ckfinder.png

Дополнительные ссылки

Profile picture for user Гость

Артур , ,

Сайт расположен по адресу http://мойсайт/drupal/
Поставил модуль CKEditor и библиотеки CKEditor 4.4.7 и CKFinder 2.4.2 в папку libraries
Внес в файл ckfinder/config.php необходимые незенения
В режиме редактирования материала нажимаю на панели иконку "изображение", выбираю вкладку "загрузить", нажимаю "обзор", выбираю файл, возле кнопки "обзор" название файла появляется, нажимаю "загрузить" - пропадает кнопка "обзор" и название файла. И все, больше ничего не происходит.
В консоли браузера: POST http://мойсайт.ru/drupal/sites/all/modules/ckeditor/ckfinder/core/connector/php/connector.php - [HTTP/1.1 500 Internal Server Error 13279мс]

Profile picture for user Гость

Александр , ,

А разве комментирование функции CheckAuthentication() не приведёт к огромной уязвимости? 

Тогда файловый менеджер будет доступен любому не имеющему доступа к админке. 

Правда вы описываете этот файловый менеджер в контексте друпала видимо, и инклюдите другой конфиг, возможно в нём уже есть проверка на авторизацию, но если для самописных цмс его ставить, то ни в коем случае нельзя комментировать эту функцию, в ней надо реализовать проверку на авторизованность админской учётки.