Как я могу устранить ошибку "Ваши требования не могут быть разрешены к установочному набору пакетов"?
Когда я запускаю 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
а затем установить композитор