CKFinder和composer版本冲突



我正在将CKFinder(3.1.0)与现有应用程序集成。我想使用S3适配器进行存储,它在应用程序中隔离运行良好。

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

有人成功地使用CKFinder的本地供应商文件以及项目范围的composer库(如aws-sdk-php)运行CKFinder吗。我可以在整个项目范围内转换为使用aws-sdk的2.27版本,但这并不理想。

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自动加载器中:

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

重要:如果您在应用程序中使用AWS-S33.x版本SDK,则无法解决此冲突。CKFinder将无法正常使用此版本,因为AWS-SDK v3与v2.7不向后兼容。

相关内容

  • 没有找到相关文章

最新更新