2015-10-19 3 views
3

Я пытаюсь настроить новый экземпляр CKFinder 3 (интегрированный с CKEditor), и я ломаю голову, пытаясь отследить и решить эту проблему. Извините за стену текста.Невозможно открыть CKFinder - Недопустимый тип ресурса

Когда я пытаюсь открыть окно «Обзор» (как только откроется окно), я просто получаю загрузочный тибетский блок и следующий журнал, сгенерированный в папке загрузки (у меня включена регистрация отладки).

[2015-10-19 23:05:41] CKFinder.ERROR: exception 'CKSource\CKFinder\Exception\InvalidResourceTypeException' with message 'Invalid resource type: ' in C:\inetpub\wwwroot\*snip*\resources\other\ckfinder\core\connector\php\vendor\cksource\ckfinder\src\CKSource\CKFinder\Config.php:376 

Stack trace: 
#0 C:\inetpub\wwwroot\*SNIP*\resources\other\ckfinder\core\connector\php\vendor\cksource\ckfinder\src\CKSource\CKFinder\ResourceType\ResourceTypeFactory.php(34): CKSource\CKFinder\Config->getResourceTypeNode('') 
#1 C:\inetpub\wwwroot\*SNIP*\resources\other\ckfinder\core\connector\php\vendor\cksource\ckfinder\src\CKSource\CKFinder\Filesystem\Folder\WorkingFolder.php(96): CKSource\CKFinder\ResourceType\ResourceTypeFactory->getResourceType('') 
#2 C:\inetpub\wwwroot\*SNIP*\resources\other\ckfinder\core\connector\php\vendor\cksource\ckfinder\src\CKSource\CKFinder\CKFinder.php(117): CKSource\CKFinder\Filesystem\Folder\WorkingFolder->__construct(Object(CKSource\CKFinder\CKFinder)) 
#3 C:\inetpub\wwwroot\*SNIP*\resources\other\ckfinder\core\connector\php\vendor\pimple\pimple\src\Pimple\Container.php(112): CKSource\CKFinder\CKFinder->CKSource\CKFinder\{closure}(Object(CKSource\CKFinder\CKFinder)) 
#4 C:\inetpub\wwwroot\*SNIP*\resources\other\ckfinder\core\connector\php\vendor\cksource\ckfinder\src\CKSource\CKFinder\CKFinder.php(288): Pimple\Container->offsetGet('working_folder') 
#5 C:\inetpub\wwwroot\*SNIP*\resources\other\ckfinder\core\connector\php\vendor\cksource\ckfinder\src\CKSource\CKFinder\Command\CommandAbstract.php(68): CKSource\CKFinder\CKFinder->getWorkingFolder() 
#6 C:\inetpub\wwwroot\*SNIP*\resources\other\ckfinder\core\connector\php\vendor\cksource\ckfinder\src\CKSource\CKFinder\CommandResolver.php(150): CKSource\CKFinder\Command\CommandAbstract->checkPermissions() 
#7 C:\inetpub\wwwroot\*SNIP*\resources\other\ckfinder\core\connector\php\vendor\symfony\http-kernel\Symfony\Component\HttpKernel\HttpKernel.php(133): CKSource\CKFinder\CommandResolver->getController(Object(Symfony\Component\HttpFoundation\Request)) 
#8 C:\inetpub\wwwroot\*SNIP*\resources\other\ckfinder\core\connector\php\vendor\symfony\http-kernel\Symfony\Component\HttpKernel\HttpKernel.php(66): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1) 
#9 C:\inetpub\wwwroot\*SNIP*\resources\other\ckfinder\core\connector\php\vendor\cksource\ckfinder\src\CKSource\CKFinder\CKFinder.php(491): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) 
#10 C:\inetpub\wwwroot\*SNIP*\resources\other\ckfinder\core\connector\php\vendor\cksource\ckfinder\src\CKSource\CKFinder\CKFinder.php(261): CKSource\CKFinder\CKFinder->handle(Object(Symfony\Component\HttpFoundation\Request)) 
#11 C:\inetpub\wwwroot\*SNIP*\resources\other\ckfinder\core\connector\php\connector.php(20): CKSource\CKFinder\CKFinder->run() 
#12 {main} [] [] 

URL-адрес, я использую, чтобы получить доступ к CKFinder является http://*SNIP*/resources/other/ckfinder/ckfinder.html?type=Images, поэтому тип ресурса обязательно устанавливается в соответствии с требованиями. Он также определенно существует в конфигурации, как показано ниже.

Это исключение регистрируется при попытке использовать быстрой загрузки объектов:

[2015-10-19 23:06:19] CKFinder.ERROR: exception 'CKSource\CKFinder\Exception\UnauthorizedException' with message 'Unauthorized' in C:\inetpub\wwwroot\*SNIP*\resources\other\ckfinder\core\connector\php\vendor\cksource\ckfinder\src\CKSource\CKFinder\Command\CommandAbstract.php:75 
Stack trace: 
#0 C:\inetpub\wwwroot\*SNIP*\resources\other\ckfinder\core\connector\php\vendor\cksource\ckfinder\src\CKSource\CKFinder\CommandResolver.php(150): CKSource\CKFinder\Command\CommandAbstract->checkPermissions() 
#1 C:\inetpub\wwwroot\*SNIP*\resources\other\ckfinder\core\connector\php\vendor\symfony\http-kernel\Symfony\Component\HttpKernel\HttpKernel.php(133): CKSource\CKFinder\CommandResolver->getController(Object(Symfony\Component\HttpFoundation\Request)) 
#2 C:\inetpub\wwwroot\*SNIP*\resources\other\ckfinder\core\connector\php\vendor\symfony\http-kernel\Symfony\Component\HttpKernel\HttpKernel.php(66): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1) 
#3 C:\inetpub\wwwroot\*SNIP*\resources\other\ckfinder\core\connector\php\vendor\cksource\ckfinder\src\CKSource\CKFinder\CKFinder.php(491): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) 
#4 C:\inetpub\wwwroot\*SNIP*\resources\other\ckfinder\core\connector\php\vendor\cksource\ckfinder\src\CKSource\CKFinder\CKFinder.php(261): CKSource\CKFinder\CKFinder->handle(Object(Symfony\Component\HttpFoundation\Request)) 
#5 C:\inetpub\wwwroot\*SNIP*\resources\other\ckfinder\core\connector\php\connector.php(20): CKSource\CKFinder\CKFinder->run() 
#6 {main} [] [] 

и некоторые выбранные соответствующие части config.php (. NB $_SESSION['guid'] установлен ранее и не является причиной этой проблемы) :

... 

$config['authentication'] = function() { 
    if (isset($_SESSION['guid'])) { 
     return true; 
    } else { 
     return false; 
    } 
}; 

... 

$config['backends'][] = array(
    'name'   => 'default', 
    'adapter'  => 'local', 
    'baseUrl'  => '/resources/uploads/'.$_SESSION['guid'].'/', 
    // 'root'   => '', // Can be used to explicitly set the CKFinder user files directory. 
    'chmodFiles' => 0777, 
    'chmodFolders' => 0755, 
    'filesystemEncoding' => 'UTF-8', 
); 

... 

$config['defaultResourceTypes'] = ''; 

$config['resourceTypes'][] = array(
    'name'    => 'Files', // Single quotes not allowed. 
    'directory'   => 'files', 
    'maxSize'   => 0, 
    'allowedExtensions' => 'doc,docx,gif,jpeg,jpg,pdf,png,ppt,pptx,xls,xlsx', 
    'deniedExtensions' => '', 
    'backend'   => 'default' 
); 

$config['resourceTypes'][] = array(
    'name'    => 'Images', 
    'directory'   => 'images', 
    'maxSize'   => 0, 
    'allowedExtensions' => 'gif,jpeg,jpg,png', 
    'deniedExtensions' => '', 
    'backend'   => 'default' 
); 

... 

$config['accessControl'][] = array(
    'role'    => '*', 
    'resourceType'  => '*', 
    'folder'    => '/', 

    'FOLDER_VIEW'   => true, 
    'FOLDER_CREATE'  => true, 
    'FOLDER_RENAME'  => true, 
    'FOLDER_DELETE'  => true, 

    'FILE_VIEW'   => true, 
    'FILE_UPLOAD'   => true, 
    'FILE_RENAME'   => true, 
    'FILE_DELETE'   => true, 

    'IMAGE_RESIZE'  => true, 
    'IMAGE_RESIZE_CUSTOM' => true 
); 
... 

Пути установлены правильно и имеют правильные разрешения. CKFinder успешно создает папку '', а также подкаталог .ckfinder. Если вы используете средство быстрой загрузки, он также создает подпапку «image» или «files», но ничего не загружает.

Объекты быстрой загрузки показывают «несанкционированное» исключение, даже если я явно установил $config['authentication'] = true;.

Другая важная информация:

  • PHP 5.6.7

  • Windows Server 2012 R2/IIS 8,5

  • CKEditor 4.5.3

Я ломал голову над этим и пытался проследить за последние пару недель, o любая помощь будет оценена по достоинству.

+1

Не могли бы вы добавить код JavaScript, который начинается CKEditor и CKFinder? – zaak

+0

На данный момент я не использую Javascript (хотя я тоже пробовал его с тем же результатом). Я устанавливаю следующие параметры при инициализации CKEditor: 'filebrowserBrowseUrl',' filebrowserUploadUrl', 'filebrowserImageBrowseUrl' и' filebrowserImageUploadUrl' Они настроены на соответствующие URL-адреса, причем параметр 'type' задан как параметр (« Файлы "или" Изображения "соответственно) – scottb

ответ

2

Я обнаружил, что явное перечисление типов ресурсов по умолчанию в config.php исправило эту проблему. Я думаю, что это ошибка, потому что documentation говорит, что все типы ресурсов загружаются, если это поле остается пустой строкой, но оставляя его как пустую строку, похоже, нарушает процесс инициализации.

Например, в config.php, замените:

$config['defaultResourceTypes'] = ''; 

с:

$config['defaultResourceTypes'] = 'Files,Images'; 
Смежные вопросы