我正在将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
文件,使其使用应用程序依赖项。
-
将以下连接器依赖项添加到
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
目录中:- 将内容从分发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
。
- 将内容从分发ZIP中的
重要:如果您在应用程序中使用AWS-S33.x版本SDK,则无法解决此冲突。CKFinder将无法正常使用此版本,因为AWS-SDK v3与v2.7不向后兼容。