2015-10-19 117 views
3

我试图建立一个CKFinder 3(与CKEditor集成)的新实例,并试图追踪并解决这个问题。对不起,文字墙。当我试图打开浏览窗口(打开窗口后),我只是得到加载throbber和上传文件夹(我打开调试日志记录)中生成的以下日志。无法打开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} [] [] 

我使用访问CKFinder的URL为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

我已经一直在琢磨着我的大脑,并试图在过去的几周里追踪它o任何援助将不胜感激。

+1

能否请您补充一点开始的CKEditor与CKFinder一个JavaScript代码? – zaak

+0

目前我没有使用JavaScript(尽管我也试过它,结果也是一样)。我在初始化CKEditor时设置了以下选项:'filebrowserBrowseUrl','filebrowserUploadUrl','filebrowserImageBrowseUrl'和'filebrowserImageUploadUrl' 它们被设置为相关的URL,其中'type'选项作为参数给出“或”图像“) – scottb

回答

2

我发现明确列出config.php中的默认资源类型解决了这个问题。我认为这是一个错误,因为documentation表示如果将该字段留为空字符串,但将其保留为空字符串似乎会破坏初始化过程,则会加载所有资源类型。

例如,在config.php,替换:

$config['defaultResourceTypes'] = ''; 

有:

$config['defaultResourceTypes'] = 'Files,Images'; 
相关问题