首页 > 解决方案 > 安装 Laravel Composer 依赖的问题

问题描述

我们正在尝试通过 Composer 安装包 google / recaptcha 1.1,为了安装它 Composer 要求我们安装 phpdocumentor 包,但是在运行时

# composer require --dev phpdocumentor / phpdocumentor dev-master 

这给了我们一个错误,我附上了一个丝网印刷品。在此处输入图像描述

之前,Composer 向我们指出 nikic / php-parser 包存在问题,我们发现文件 composer.lock 中列出了该包,我们将其删除,但是现在 composer 给我们这个与包 symfony / console v4 相关的错误.1.1 它也列在 composer.lock 文件中,我们也尝试从 composer.lock 中删除此依赖项,但我不确定我们是否通过消除这些依赖项来做正确的事情。因为除了删除另一个错误之外,另一个包上还会显示另一个错误,如果我们继续这样下去,我们最终会消除许多依赖关系。请帮忙!

标签: phplaravelcomposer-php

解决方案


不要手动从 composer.lock 中删除东西

当您需要未传递特定版本(如 dev-master 或 ^1)的包时,composer 将下载符合您的 composer.json 的最新版本并将这些版本记录在 composer.lock 上。

composer.lock 只不过是 composer install 的副产品

如果你手动编辑 composer.lock,你基本上是在搞乱作曲家的内部结构。

删除包的正确方法是运行composer remove vendor/package 或手动从composer.json中删除它然后运行composer update

composer.lock 是神圣的,不要碰它。

现在你已经摸到了它,你想自己拧开,所以:

  • 删除 composer.lockrm composer.lock
  • 重新安装你的库,并获得一个未篡改的 composer.lockcomposer install
  • 安装你的库composer require --dev phpdocumentor/phpdocumentor dev-master

相同的结果,不同的方法:

  • 删除 composer.lockrm composer.lock
  • 使用您想要的库更新 composer.json(将 phpdocumentor 添加到 composer.json 的开发依赖项部分)
  • 重新安装一切composer install

推荐阅读