php - Composer 提供/要求未找到实现

标签 php composer-php

尝试使用 Composer 的provide功能,我向我的实现存储库添加了一个 provide 部分 ffa-php-mock ,其中我说它提供了 shadiakiki1986/ffa-php-implementation 。在我使用此实现的存储库中,ffa-php-cli ,我更换了composer require entry需要 ffa-php-mock 带有 entry需要ffa-php-implementation。如果我尝试运行 composer 更新,我会得到以下信息

> composer update
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
    - The requested package shadiakiki1986/ffa-php-implementation could not be found in any version, there may be a typo in the package name.

Potential causes:
 - A typo in the package name
 - The package is not available in a stable-enough version according to your minimum-stability setting
   see <https://getcomposer.org/doc/04-schema.md#minimum-stability> for more details.

Read <https://getcomposer.org/doc/articles/troubleshooting.md> for further common problems.

你能给我一些关于如何调试问题的提示吗?

编辑:简化示例

我在虚拟项目中对已经存在的东西尝试了provide功能。 jackalope/jackalope提供 phpcr/phpcr-implementation,而 DoctrinePHPCRBundle 已经需要它了。 .

如果我使用composer init启动一个新的空项目并指定我的项目依赖于phpcr/phpcr-implementation,我会得到与上面相同的错误。我还尝试将 phpcr/phpcr-implementation 直接放入 Composer.json 文件中并运行 composer update,但无济于事。

> cat composer.json 
{

    "require": {
       "phpcr/phpcr-implementation": "2.1.0"
      }
}

我认为这可能是 Composer 中的一个错误,但似乎来自 this issue它已经在使用中。

> composer --version
Composer version 1.3.0 2016-12-24 00:47:03

我能找到的最接近的 Composer github 问题是 #2811 ,但那个人说报告不清楚,而不是 provide 不起作用

最佳答案

所以我最终了解到带有实现的特定包仍然应该包含在composer.json 文件中。对于使用该库的包,没关系,因为它们会添加到 require 部分。对于直接需要实现的库,应该在 require-dev 中完成,以便单元测试可以工作,并且使用该库的其他项目不需要使用相同的实现

关于php - Composer 提供/要求未找到实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41484850/

相关文章:

php - 如何使用phpexcel在excel表中插入公式

javascript - Vue.js 2 在一个单文件组件中定义多个属性

php - `composer update` 没有更新到最新版本

php - Jenkins 用户无法运行 composer install

PHP 垃圾收集说明

php - 时间表和数据库

php - 提高MySQL查询性能——可能的索引问题

php - composer `extra.symfony.require` 限制是如何实现的?

git - Yii2 & Composer - 如何在本地提取 1 个包,忽略 packagist

php - Composer 不更新自动加载命名空间