0

Zend は常にコア パッケージの ZF3 バージョンを公開しているため、古い ZF2 アプリケーションを動作させるのに問題があります。

composer install有効な composer.lock を配置して実行すると、ほとんどの ZF 依存関係で次の警告が表示されます。

- Installing zendframework/zend-stdlib (2.7.7)
  Downloading: 100%         
  Failed to download zendframework/zend-stdlib from dist: The checksum verification of the file failed (downloaded from https://packages.zendframework.com/composer/zendframework-zend-stdlib-2.7.7-19d9a4.zip)
  Now trying to download from source
- Installing zendframework/zend-stdlib (2.7.7)
  Cloning baa65aec7bc75260254b5f03447f0c16360f9e59

そのような多くの依存関係があるため、インストール/クローン作成に時間がかかり、決して終了しないため、VM がメモリ不足になります。

ここで、composer updatecomposer.lock を実行または削除して、composer installもう一度実行しようとしました。Zendが言うように、composer.jsonからpackages.zendframework.comレポを削除しようとさえしましたが、もう必要ありません。

ただし、新しい ZF3 バージョンにより、解決できない要件が発生します。

例:

Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - jhuet/zdt-logger-module dev-master requires zendframework/zend-developer-tools ^1.1.0 -> satisfiable by zendframework/zend-developer-tools[1.2.x-dev, 1.1.x-dev].
    - Can only install one of: zendframework/zend-developer-tools[dev-master, 1.2.x-dev].
    - Conclusion: don't install zendframework/zend-servicemanager 2.7.7
    - Conclusion: don't install zendframework/zend-servicemanager 3.1.1
    - Conclusion: don't install zendframework/zend-servicemanager 3.1.0
    - Installation request for zendframework/zend-developer-tools dev-master -> satisfiable by zendframework/zend-developer-tools[dev-master].
    - Conclusion: don't install zendframework/zend-servicemanager 2.7.6|install zendframework/zend-servicemanager 3.1.0
    - Installation request for zfcampus/zf-apigility-admin ~1.0 -> satisfiable by zfcampus/zf-apigility-admin[1.0.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.1.0, 1.1.1, 1.1.2, 1.2.0, 1.2.1, 1.2.2, 1.3.0, 1.3.1, 1.3.2, 1.3.3, 1.4.0, 1.4.1, 1.4.2, 1.4.3, 1.5.0, 1.5.1, 1.5.2, 1.5.3, 1.5.4, 1.5.5, 1.5.6, 1.5.7].
    - Installation request for jhuet/zdt-logger-module dev-master -> satisfiable by jhuet/zdt-logger-module[dev-master].
    - Installation request for zf-commons/zfc-rbac ~2.0 -> satisfiable by zf-commons/zfc-rbac[2.0.0, 2.1.0, 2.1.1, 2.1.2, 2.2.0, 2.3.0, 2.3.1, 2.4.0, 2.4.1, 2.4.2, v2.5.0, v2.5.1, v2.5.2, v2.5.3, v2.5.4, v2.5.5, v2.5.6].
    - jhuet/zdt-logger-module dev-master requires zendframework/zend-servicemanager 3.* -> satisfiable by zendframework/zend-servicemanager[3.0.0, 3.0.1, 3.0.2, 3.0.3, 3.1.0, 3.1.1].
    - Can only install one of: zendframework/zend-servicemanager[3.0.0, 2.7.5].
    - Can only install one of: zendframework/zend-servicemanager[3.0.1, 2.7.5].
    - Can only install one of: zendframework/zend-servicemanager[3.0.2, 2.7.5].
    - zendframework/zend-developer-tools 1.1.x-dev requires zendframework/zend-servicemanager ^2.7.5 || ^3.0.3 -> satisfiable by zendframework/zend-servicemanager[2.7.5, 2.7.6, 2.7.7, 3.0.3, 3.1.0, 3.1.1].
    - Conclusion: don't install zendframework/zend-servicemanager 3.0.3

結果: ZF2 アプリを正常に動作させることができなくなりました。どうすればこれを修正できますか?

これは私のcomposer.jsonです:

{
    "name": "myapp",
    "description": "My app",
    "version": "1.5.0",
    "require": {
        "php": "~7.0",
        "ext-intl": ">=1.1.0",
        "ext-mbstring": "*",
        "zendframework/zendframework": "~2.5",
        "zf-commons/zfc-user": "~1.0",
        "zf-commons/zfc-rbac": "~2.0",
        "zendframework/zendoauth": "~2.0",
        "zfcampus/zf-apigility": "~1.0",
        "zfcampus/zf-development-mode": "~2.0",
        "aws/aws-sdk-php-zf2": "~2.0",
        "goalio/goalio-forgotpassword": "~1.0",
        "maglnet/magl-markdown": "~1.4",
        "ocramius/proxy-manager": "~1.0"
    },
    "require-dev": {
        "zfcampus/zf-apigility-admin": "~1.0",
        "zfcampus/zf-apigility-documentation": "~1.0",
        "zendframework/zend-developer-tools": "dev-master",
        "jhuet/zdt-logger-module": "dev-master",
        "bjyoungblood/bjy-profiler": "dev-master"
    }
}

これは、多くの手作業なしで何とか解決できることを願っています。

4

1 に答える 1

2

これらは、dev-master のようなものが必要な場合に常に遭遇する可能性がある問題です。ベスト プラクティスは、セマンティック バージョン番号に固執することです。パッケージ メンテナーがセマンティック バージョニングに従う場合、重大な変更を伴うパッケージを要求する必要はありません。

あなたの場合、「jhuet/zdt-logger-module」のdev-masterバージョンに依存しています。これは最近、ZF3 をサポートするように更新されました。を削除する"jhuet/zdt-logger-module": "dev-master",と、うまくいくようです。

そのパッケージを保持するには、これが必要です: "jhuet/zdt-logger-module": "^0.3". これにより、ZF3 を必要とする新しい 1.0.0 パッケージが読み込まれないようになります。

于 2016-09-15T08:13:35.133 に答える