CKFinder 3 не может загружать файлы

У меня проблема с реализацией CKFinder 3. Все работает нормально, кроме загрузки файлов и изображений.

Когда я нажимаю загрузить. Я выбираю файл на своем компьютере, а затем появляется сообщение об ошибке: Загрузка завершена с ошибками. Когда я нажимаю «Подробности», он показывает: неверный файл.

В моем файле отладки он выводит это:

[02-Sep-2015 16:35:27 Europe/Berlin] PHP Notice:  Undefined index: dirname in ckfinder/core/connector/php/vendor/cksource/ckfinder/src/CKSource/CKFinder/Filesystem/File/UploadedFile.php on line 70

Может кто-нибудь, пожалуйста, помогите мне с этим?

Это мой код config.php CKFinder:

<?php

/*
 * CKFinder Configuration File
 *
 * For the official documentation visit http://docs.cksource.com/ckfinder3-php/
 */

/*============================ PHP Error Reporting ====================================*/
// http://docs.cksource.com/ckfinder3-php/debugging.html

// Production
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT);
ini_set('display_errors', 0);

// Development
// error_reporting(E_ALL);
// ini_set('display_errors', 1);

/*============================ General Settings =======================================*/
// http://docs.cksource.com/ckfinder3-php/configuration.html

$config = array();

/*============================ Enable PHP Connector HERE ==============================*/
// http://docs.cksource.com/ckfinder3-php/configuration.html#configuration_options_authentication

$config['authentication'] = function() {
    return true;
};

/*============================ License Key ============================================*/
// http://docs.cksource.com/ckfinder3-php/configuration.html#configuration_options_licenseKey

$config['licenseName'] = '';
$config['licenseKey']  = '';

/*============================ CKFinder Internal Directory ============================*/
// http://docs.cksource.com/ckfinder3-php/configuration.html#configuration_options_privateDir

$config['privateDir'] = array(
    'backend' => 'default',
    'tags'   => '.ckfinder/tags',
    'logs'   => '.ckfinder/logs',
    'cache'  => '.ckfinder/cache',
    'thumbs' => '.ckfinder/cache/thumbs',
);

/*============================ Images and Thumbnails ==================================*/
// http://docs.cksource.com/ckfinder3-php/configuration.html#configuration_options_images

$config['images'] = array(
    'maxWidth'  => 1600,
    'maxHeight' => 1200,
    'quality'   => 80,
    'sizes' => array(
        'small'  => array('width' => 480, 'height' => 320, 'quality' => 80),
        'medium' => array('width' => 600, 'height' => 480, 'quality' => 80),
        'large'  => array('width' => 800, 'height' => 600, 'quality' => 80)
    )
);

/*=================================== Backends ========================================*/
// http://docs.cksource.com/ckfinder3-php/configuration.html#configuration_options_backends

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

/*================================ Resource Types =====================================*/
// http://docs.cksource.com/ckfinder3-php/configuration.html#configuration_options_resourceTypes

$config['defaultResourceTypes'] = '';

$config['resourceTypes'][] = array(
    'name'              => 'Files', // Single quotes not allowed.
    'directory'         => 'files',
    'maxSize'           => 0,
    'allowedExtensions' => '7z,aiff,asf,avi,bmp,csv,doc,docx,fla,flv,gif,gz,gzip,jpeg,jpg,mid,mov,mp3,mp4,mpc,mpeg,mpg,ods,odt,pdf,png,ppt,pptx,pxd,qt,ram,rar,rm,rmi,rmvb,rtf,sdc,sitd,swf,sxc,sxw,tar,tgz,tif,tiff,txt,vsd,wav,wma,wmv,xls,xlsx,zip',
    'deniedExtensions'  => '',
    'backend'           => 'default'
);

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

/*================================ Access Control =====================================*/
// http://docs.cksource.com/ckfinder3-php/configuration.html#configuration_options_roleSessionVar

$config['roleSessionVar'] = 'CKFinder_UserRole';

// http://docs.cksource.com/ckfinder3-php/configuration.html#configuration_options_accessControl
$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
);


/*================================ Other Settings =====================================*/
// http://docs.cksource.com/ckfinder3-php/configuration.html

$config['overwriteOnUpload'] = false;
$config['checkDoubleExtension'] = true;
$config['disallowUnsafeCharacters'] = false;
$config['secureImageUploads'] = false;
$config['checkSizeAfterScaling'] = true;
$config['htmlExtensions'] = array('html', 'htm', 'xml', 'js');
$config['hideFolders'] = array('.*', 'CVS', '__thumbs');
$config['hideFiles'] = array('.*');
$config['forceAscii'] = false;
$config['xSendfile'] = false;

// http://docs.cksource.com/ckfinder3-php/configuration.html#configuration_options_debug
$config['debug'] = false;

/*==================================== Plugins ========================================*/
// http://docs.cksource.com/ckfinder3-php/configuration.html#configuration_options_plugins

$config['pluginsDirectory'] = __DIR__ . '/plugins';
$config['plugins'] = array();

/*================================ Cache settings =====================================*/
// http://docs.cksource.com/ckfinder3-php/configuration.html#configuration_options_cache

$config['cache'] = array(
    'imagePreview' => 24 * 3600,
    'thumbnails'   => 24 * 3600 * 365
);

/*============================== End of Configuration =================================*/

// Config must be returned - do not change it.
return $config;

person EddieAjax    schedule 02.09.2015    source источник
comment
Размещаете ли вы коннектор CKFinder на сервере IIS? Возникла проблема с доступом к временному каталогу в этой конфигурации.   -  person zaak    schedule 02.09.2015
comment
Я использую XAMPP локально, мне нужно что-то изменить. Я мало знаю о серверах IIS и т. д.   -  person EddieAjax    schedule 03.09.2015
comment
Я только что проверил новую установку XAMPP 5.6.12 в Windows 7 и не смог воспроизвести эту проблему, кажется, все работает нормально. Единственное, что мне нужно было сделать, это включить расширение Fileinfo (docs.cksource.com /ckfinder3-php/). Какую версию XAMPP и какую версию Windows вы используете?   -  person zaak    schedule 03.09.2015
comment
У меня XAMPP 5.5.19 работает на моем Macbook Pro с Yosemite. Я уже сделал расширение Fileinfo, но оно все равно не сработало.   -  person EddieAjax    schedule 04.09.2015


Ответы (1)


Я смог воспроизвести эту проблему на OSX. В этой версии XAMPP есть проблема с доступом к предварительно настроенному временному каталогу. Это можно изменить с помощью директивы sys_temp_dir в php.ini, но также можно настроить в новой версии CKFinder.

Пожалуйста, попробуйте следующее:

  1. Загрузите предварительную версию 3.1 CKFinder с по этой ссылке.
  2. Откройте конфигурацию соединителя CKFinder (config.php) и найдите параметр tempDirectory в нижней части файла.
  3. Замените sys_get_temp_dir() на путь к каталогу XAMPP temp. Для меня это было /Applications/XAMPP/xamppfiles/temp/.

Итак, вместо этого:

$config['tempDirectory'] = sys_get_temp_dir();

там должен быть:

$config['tempDirectory'] = '/Applications/XAMPP/xamppfiles/temp/';

Настройте другие необходимые параметры CKFinder, такие как аутентификация. Теперь загрузка должна работать нормально.

Еще одно решение:

Вместо изменения этого на уровне приложения, как описано выше, вы также можете установить глобальную директиву sys_temp_dir в php.ini. Для этого добавьте следующую строку в /Applications/XAMPP/xamppfiles/etc/php.ini:

sys_temp_dir = "/Applications/XAMPP/xamppfiles/temp/"

Затем перезапустите Apache в XAMPP. После этого местоположение временного каталога можно получить с помощью sys_get_temp_dir(), поэтому нет необходимости изменять параметр tempDirectory в конфигурации CKFinder.

person zaak    schedule 04.09.2015
comment
Большое спасибо! Это решило проблему для меня! Однако у меня есть один вопрос: если вы подключаетесь к Интернету, вам нужно изменить tempDirectory обратно на sys_get_temp_dir()? - person EddieAjax; 06.09.2015
comment
Это зависит от того, что вы подразумеваете под выходом в Интернет. Если речь идет о том, чтобы сделать вашу машину доступной из сети, то нет — параметр tempDirectory должен остаться прежним. Если речь идет о развертывании вашего приложения на удаленном сервере, то да — вам, скорее всего, потребуется снова установить его на sys_get_temp_dir(). Я отредактировал свой ответ и добавил Другое решение, описывающее, как установить sys_temp_dir глобально в php.ini. В этом случае вы можете продолжать использовать sys_get_temp_dir(). - person zaak; 07.09.2015