Невозможно открыть CKFinder — неверный тип ресурса

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

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

[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. При использовании средства быстрой загрузки также создается подпапка «изображение» или «файлы», но ничего не загружается.

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

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

  • PHP 5.6.7

  • Windows Server 2012 R2/IIS 8.5

  • CKEditor 4.5.3

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


person scottb    schedule 19.10.2015    source источник
comment
Не могли бы вы добавить код JavaScript, который запускает CKEditor и CKFinder?   -  person zaak    schedule 19.10.2015
comment
На данный момент я не использую Javascript (хотя пробовал и с тем же результатом). Я установил следующие параметры при инициализации CKEditor: filebrowserBrowseUrl, filebrowserUploadUrl, filebrowserImageBrowseUrl и filebrowserImageUploadUrl Они установлены на соответствующие URL-адреса с параметром type, заданным в качестве параметра (файлы или изображения соответственно)   -  person scottb    schedule 20.10.2015


Ответы (1)


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

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

$config['defaultResourceTypes'] = '';

с участием:

$config['defaultResourceTypes'] = 'Files,Images';
person Matt Raines    schedule 27.10.2015