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

Решение

PHP-коннектор CKFinder 3 пока не поддерживает установку с 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 каталог:

    • Переместить содержимое из /ckfinder/core/connector/php/vendor/cksource/ckfinder/src/CKSource/CKFinder каталог в дистрибутиве ZIP на _connector,
    • Добавьте его в автозагрузчик composer, используя правильное пространство имен:

      "autoload": {
      "psr-4": {
      // ...
      "CKSource\\CKFinder\\": "_connector"}
      }
      
    • изменять /ckfinder/core/connector/php/connector.php использовать autoload.php из вашего приложения.

Важный: Если вы используете AWS-S3 версия 3.x SDK в вашем приложении, то нет способа разрешить этот конфликт. CKFinder не будет работать должным образом с этой версией, поскольку AWS-SDK v3 не имеет обратной совместимости с v2.7.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]