我正在将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项目范围,但这并不理想。
答案 0 :(得分:3)
CKFinder 3 PHP连接器尚不支持使用Composer进行安装,但您可以修改composer.json
文件以使其使用应用程序依赖项。
将以下连接器依赖项添加到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"
将CKFinder包中的连接器代码提取到一个单独的目录,并使其在Composer中可加载。假设代码位于_connector
目录:
/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
。
重要:如果您在应用中使用AWS-S3 版本3.x SDK,则无法解决此冲突。由于AWS-SDK v3不向后兼容v2.7,因此CKFinder无法与此版本一起正常运行。