CKFinder和作曲家版本冲突

时间:2015-12-07 01:01:50

标签: php composer-php ckfinder

我正在将CKFinder(3.1.0)与现有应用程序集成。我想使用S3适配器进行存储,它在应用程序中可以正常工作。

我遇到的问题是CKFinder 3.1.0的下载包包含自己的库供应商目录,包括AWS SDK(v2.27) - 我有自己的AWS sdk实例,通过composer加载,这是一个与CKFinder版本冲突的更新版本,导致错误。

有没有人有任何成功运行CKFinder与本地供应商文件以及项目范围的作曲家库,如aws-sdk-php。我可以转换为使用2.27版本的aws-sdk项目范围,但这并不理想。

1 个答案:

答案 0 :(得分:3)

CKFinder 3 PHP连接器尚不支持使用Composer进行安装,但您可以修改composer.json文件以使其使用应用程序依赖项。

  1. 将以下连接器依赖项添加到composer.json(对CKFinder 3.1.0有效):

    "symfony/http-kernel": ">=2.4,<=2.8-dev",
    "symfony/event-dispatcher": ">=2.4,<=2.8-dev",
    "symfony/http-foundation": ">=2.4,<=2.8-dev",
    "pimple/pimple": "~3.0",
    "monolog/monolog": "~1.4,>=1.4.1",
    "league/flysystem": "1.0.14",
    "league/flysystem-dropbox": "1.0.0",
    "dropbox/dropbox-sdk": "~1.1.1",
    "aws/aws-sdk-php": "~2.7.17",
    "league/flysystem-aws-s3-v2": "1.0.3",
    "league/flysystem-cached-adapter": "1.0.2"
    
  2. 将CKFinder包中的连接器代码提取到一个单独的目录,并使其在Composer中可加载。假设代码位于_connector目录:

    • 将内容从分发ZIP中的/ckfinder/core/connector/php/vendor/cksource/ckfinder/src/CKSource/CKFinder目录移至_connector
    • 使用适当的命名空间将其添加到composer autoloader:

      "autoload": {
          "psr-4": {
               // ...
               "CKSource\\CKFinder\\": "_connector"
           }
      }
      
    • 更改/ckfinder/core/connector/php/connector.php以使用您应用中的autoload.php

  3. 重要:如果您在应用中使用AWS-S3 版本3.x SDK,则无法解决此冲突。由于AWS-SDK v3不向后兼容v2.7,因此CKFinder无法与此版本一起正常运行。