Как я могу устранить ошибку "Ваши требования не могут быть разрешены к установочному набору пакетов"?

Когда я запускаю composer update, я получаю некоторый проводной вывод.

enter image description here

Вот мой композитор .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"
}

Как это исправить?

Ответы

Ответ 1

У ваших зависимостей в программном обеспечении конфликт несовместимой версии.

В то же время вы хотите установить любую версию Laravel 4.2.x и "zizaco/entrust" из ее основной ветки. И эта ветка master требует как минимум Laravel 5.0 (грубо говоря).

Проблема заключается в зависимости от веток. Вполне вероятно, что пакет zizaco/entrust однажды использовал Laravel 4.2 в своей основной ветке, и что вы смогли установить свои зависимости в тот день. Но в тот самый момент, когда эта ветвь обновляется с несовместимым требованием к версии, вы никогда не сможете запустить composer update и получить обновленные зависимости.

Всегда используйте помеченные версии! В идеале вы используете смягченную версию, которая позволяет совместимые обновления. Это должно быть выражено как требование версии тильды с двумя числами: ~1.2 установит версию 1.2.0 и выше (например, 1.2.99 или 1.2.100), а также 1.3 и выше. Если вам нужен определенный выпуск патча: версия с тремя номерами каретки ^1.2.10 установит 1.2.10 или выше, а также 1.3 и выше.

Использование этого требования к версии вместо dev-master позволит вам использовать выпущенные версии вместо нестабильного состояния в основной ветке и позволит вам обратиться к самой последней версии, которая все еще работает с Laravel 4.2. Я предполагаю, что это будет версия zizaco/entrust 1.3.0, но версия 1.2 также подпадает под эту категорию. Перейти с "zizaco/entrust": "~1.2".

Ответ 2

Я столкнулся с той же проблемой. Я использую инфраструктуру микросервиса Lumen. Недавно я решил эту проблему, установив два пакета: -

  • sudo apt-get install php7.0-mbstring,
  • sudo apt-get install php7.0-xml или sudo apt-get install php-xml

После установки этой команды вам необходимо выполнить следующую команду: обновление композитора

Надеюсь, он решит проблему. Я работаю над своей системой.

Ответ 3

Были ли эти dev-master добавлены автоматически? Избегайте их как ненужных ограничений версии, для "любой подходящей версии" используйте "*" или "@dev", если вы не возражаете против пакетов dev. Я предполагаю, что Entrust является потенциальным нарушителем спокойствия.

Кроме того, "minimum-stability": "stable" налагает дополнительные ограничения, а

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

более бесконфликтный, рассмотрите его как правило.

Ответ 4

Запустите эту команду:

установка композитора --ignore-platform-reqs

или

Обновление композитора --ignore-platform-reqs

Ответ 5

Добавьте "barryvdh/laravel-cors": "^0.7.3" в конец массива require внутри composer.json

Сохраните композитор .json и запустите composer update

Вы закончили!

Ответ 6

"config": { "Платформа": {   "ext-pcntl": "7.2",   "ext-posix": "7.2" } }

Ответ 7

ПРИЧИНА:

Ошибка возникает из-за того, что папка вашего проекта принадлежит пользователю root.

РЕШЕНИЕ

Смените владельца на зарегистрированного пользователя, а не на пользователя root. Если у вас есть только root в качестве единственного пользователя, создайте другого пользователя с привилегиями root.

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

затем

$ composer install

Ответ 8

Я столкнулся с этой проблемой в Laravel 5.8, и я сделал composer require для каждой библиотеки и все там, где она была установлена правильно.

Вот так:

вместо добавления его в файл composer.json или указания версии:

composer require msurguy/honeypot: dev-master

Я вместо этого сделал без указания какой-либо версии:

composer require msurguy/honeypot

Я надеюсь, что это помогает, спасибо

Ответ 9

Просто активируйте завиток в файле php.ini

;extension=php_curl.dll

к

extension=php_curl.dll

а затем установить композитор