web-dev-qa-db-ja.com

「要件をインストール可能なパッケージのセットに解決できませんでした」エラーを解決するにはどうすればよいですか?

composer updateを実行すると、いくつかの有線出力を受け取ります。

enter image description here

以下は、私のcomposer.jsonの外観です。

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.", "keywords": ["framework", "laravel"],
    "license": "MIT",
    "repositories": [{
        "type": "vcs",
        "url": "https://github.com/Zizaco/ardent.git"
    }],
    "require-dev": {
        "phpunit/phpunit": "4.3.*"
    },
    "require": {
        "laravel/framework": "4.2.*", 
        "laravelbook/ardent": "dev-master as 2.4.0", 
        "zizaco/entrust": "dev-master", 
        "sebklaus/profiler": "dev-master", 
        "doctrine/dbal": "dev-master"
    },
    "autoload": {
        "classmap": [
            "app/commands",
            "app/controllers",
            "app/models",
            "app/database/migrations", "app/database/seeds", "app/tests",
            "app/libraries"
        ]
    },
    "scripts": {
        "post-install-cmd": [
            "php artisan clear-compiled", 
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "php artisan clear-compiled", 
            "php artisan optimize"
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ]
    },
    "config": {
        "preferred-install": "dist"
    },
    "minimum-stability": "stable"
}

どうすれば修正できますか?

40
kyo

ソフトウェアの依存関係に互換性のないバージョンの競合があります。

同時に、任意のLaravel 4.2.xバージョン、およびそのマスターブランチから「zizaco/entrust」をインストールする必要があります。そして、そのマスターブランチには少なくともLaravel 5.0(大まかに言って)が必要です。

問題は、ブランチへの依存性から生じます。パッケージzizaco/entrustはかつてmasterブランチでLaravel 4.2を使用しており、その日に依存関係をインストールできた可能性があります。しかし、このブランチが互換性のないバージョン要件で更新された瞬間、composer updateを実行して更新された依存関係を取得することは決してできなくなります。

常にタグ付きバージョンを使用してください!理想的には、互換性のある更新を可能にする緩和されたバージョン要件を使用します。これは、チルダ2番号のバージョン要件として表現する必要があります。~1.2は、バージョン1.2.0以降(1.2.99や1.2.100など)、および1.3以降をインストールします。特定のパッチリリースが必要な場合:Caret-three-numberバージョン^1.2.10は1.2.10以降、1.3以降もインストールします。

dev-masterの代わりにこのバージョン要件を使用すると、masterブランチで不安定な状態の代わりにリリースバージョンを使用でき、Laravel 4.2で引き続き動作する最新バージョンに対処できます。それはzizaco/entrustバージョン1.3.0ですが、バージョン1.2も対象となるでしょう。 "zizaco/entrust": "~1.2"を使用します。

29
Sven

私は同じ問題に直面しています。 「Lumen」マイクロサービスフレームワークを使用しています。私は最近2つのパッケージをインストールすることで同じ問題を解決しました:

  1. Sudo apt-get install php7.0-mbstring
  2. Sudo apt-get install php7.0-xmlまたはSudo apt-get install php-xml

これをインストールした後、このコマンドを実行する必要があります:composer update

問題が解決することを願っています。私は自分のシステムで作業しています。

28
Ankit

それらのdev-mastersは自動的に追加されましたか?不要なバージョンの制約としてそれらを避けてください。「適切なバージョン」には"*"を使用してください。devパッケージを気にしない場合は"@dev"を使用してください。私の推測では、Entrustは潜在的なトラブルメーカーです。

また、"minimum-stability": "stable"は追加の制約を課し、

"minimum-stability": "dev",
"prefer-stable": true

競合がより少ないため、経験則と考えてください。

7
Estus Flask

次のコマンドを実行します:

composer install --ignore-platform-reqs

または

composer update --ignore-platform-reqs

1
Gufran Hasan

Composer.json内のrequire配列の最後に"barryvdh/laravel-cors": "^0.7.3"を追加します

Composer.jsonを保存し、composer updateを実行します

できました!

1
Tahir Yasin

原因:

プロジェクトフォルダーがルートユーザーによって所有されているため、エラーが発生しています。

ソリューション

所有権を、rootユーザーではなく現在サインインしているユーザーに変更します。 rootが唯一のユーザーである場合は、root特権を持つ別のユーザーを作成します。

$ Sudo chown -R current_user/my/project/directory /

それから

$ composerインストール

0
Simon Njenga

Laravel 5.8でこの問題が発生しました。各ライブラリおよび正しくインストールされたすべての場所でcomposer requireを実行しました。

そのようです:

composer.jsonファイルに追加したり、バージョンを指定したりする代わりに:

composer require msurguy/honeypot: dev-master

代わりに、バージョンを指定せずにした:

composer require msurguy/honeypot

お役に立てば幸いです

0
BlackPearl

"config":{"platform":{"ext-pcntl": "7.2"、 "ext-posix": "7.2"}}

0
Full Heleno