如何解决“您的要求无法解析为可安装的软件包”错误?

问题描述 投票:39回答:7

当我运行composer update时,我收到一些有线输出。

这是我的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"
}

我该如何解决这个问题?

laravel laravel-4 composer-php
7个回答
29
投票

您的软件依赖项具有不兼容的版本冲突。

同时你想安装任何Laravel 4.2.x版本,并从其主分支安装“zizaco / entrust”。而且这个主分支至少需要Laravel 5.0(粗略地说)。

问题来自对分支的依赖。 zizaco /委托曾经在其主分支中使用Laravel 4.2,并且您可以在当天安装依赖项。但是,当这个分支使用不兼容的版本要求进行更新时,您将永远无法运行composer update并获得更新的依赖项。

始终使用标记版本!理想情况下,您使用允许兼容更新的宽松版本要求。这应该表示为tilde-two-number版本要求:~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将允许您在主分支中使用已发布的版本而不是不稳定状态,并允许您处理仍适用于Laravel 4.2的最新版本。我想这将是zizaco /委托版本1.3.0,但版本1.2也符合条件。和"zizaco/entrust": "~1.2"一起去。


28
投票

我面临同样的问题。我正在使用'Lumen'微服务框架。我最近通过安装两个软件包解决了同样的问题: -

  1. sudo apt-get install php7.0-mbstring,
  2. sudo apt-get install php7.0-xml或sudo apt-get install php-xml

安装完成后,需要执行以下命令: - composer update

希望,它会解决这个问题。我在我的系统上工作。


7
投票

这些dev-masters是自动添加的吗?避免它们作为不必要的版本约束,因为“任何合适的版本”使用"*",或者"@dev"如果你不介意开发包。我的猜测是Entrust是潜在的麻烦制造者。

此外,"minimum-stability": "stable"施加了额外的限制,并且

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

更加无冲突,认为这是一个经验法则。


1
投票

在composer.json中的"barryvdh/laravel-cors": "^0.7.3"数组末尾添加require

保存composer.json并运行composer update

你完成了!


1
投票

运行此命令:

作曲家安装--ignore-platform-reqs

要么

作曲家更新--ignore-platform-reqs


0
投票

“config”:{“platform”:{“ext-pcntl”:“7.2”,“ext-posix”:“7.2”}}


0
投票

原因:

发生错误的原因是您的项目文件夹归root用户所有。

将所有权更改为当前登录的用户而不是root用户。如果您只将root用户作为唯一用户,请创建具有root权限的其他用户。

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

然后

$ composer install


0
投票

我在Laravel 5.8中遇到了这个问题,我做的是为每个库做所有正确安装的composer require

像这样:

而不是将其添加到composer.json文件或指定版本:

composer require msurguy/honeypot: dev-master

我没有指定任何版本:

composer require msurguy/honeypot

我希望它有所帮助,谢谢


-7
投票

只需激活php.ini文件中的curl即可

;extension=php_curl.dll

extension=php_curl.dll

然后作曲家安装

© www.soinside.com 2019 - 2024. All rights reserved.