Composer安装实际上并未安装库 [英] Composer install doesn't actually install library

查看:61
本文介绍了Composer安装实际上并未安装库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问题



这是一个奇怪的问题。我只是将其添加到我的composer.json文件中:

  maatwebsite / excel:〜2.1.0 

但是当我运行 composer install 时,该库没有t安装:

  composer show | grep excel 

不返回任何内容。



因此,每次我运行部署脚本时,都会出现此错误:

 > php artisan清除编译的
PHP致命错误:未捕获Symfonyf组件\Debug\Exception\FatalThrowableError:在/ Users / Shared / dev / php / toters-api / config /中找不到类'PHPExcel_Shared_Font' excel.php:182
堆栈跟踪:
#0 /Users/Shared/dev/php/toters-api/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/LoadConfiguration.php(60 ):require()
#1 /用户/共享的/dev/php/toters-api/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/LoadConfiguration.php(38):Illuminate\Foundation\ \引导程序\LoadConfiguration-> loadConfigurationFiles(对象(Illuminate\基础\应用程序),对象(Illuminate\配置\存储库))
#2 / Users / Shared / dev / php / toters-api /vendor/laravel/framework/src/Illuminate/Foundation/Application.php(203):Illuminate\Foundation\Bootstrap\LoadConfiguration->bootstrap(Object(Illuminate\Foundation\Application))
#3 /Users/Shared/dev/php/toters-api/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.ph p(267):Illuminate\Foundation\Application-> bootstrapWith(Array)
#4 / Users / Shared / dev中的/ Users / Shared / dev / php / toters-api / vendor / laravel / framew 182行上的/php/toters-api/config/excel.php

致命错误:未捕获的Symfony\Component\Debug\Exception\FatalThrowableError:在/ Users中找不到类'PHPExcel_Shared_Font' 182行上的/Shared/dev/php/toters-api/config/excel.php

Symfony\Component\Debug\Exception\FatalThrowableError:在/ Users中找不到类'PHPExcel_Shared_Font' /shared/dev/php/toters-api/config/excel.php在第182行

由于Composer忽略了我的 maatwebsite / excel 库,所以发生了预期的错误!



解决方法



我使用以下步骤将其强制执行:

  rm -rf供应商
rm composer.lock
composer install --no-scripts

但这显然是一个丑陋且昂贵的hack(我在



我刚刚注意到



但我的PHP版本是7.1。

解决方案

composer install 不同于 npm install 。我很确定您是否像这样手动添加了一个软件包,因为 composer.lock 已经存在。




  • 执行 composer更新是可行的。

  • 或通过执行<$ c添加软件包$ c> composer需要maatwebsite / excel

  • 或删除 composer.lock 然后运行 composer install



编辑:



composer要求maatwebsite / excel 将尝试安装该软件包的最新版本,但是因为您使用的是 laraval v5 .3.31 ,您应该改为安装 maatwebsite / excel〜2.1.0 。版本3适用于 laraval ^ 5.5




  • 撰写者要求 maatwebsite / excel:〜2.1.0


Problem

This is a weird one. I simply added this to my composer.json file:

"maatwebsite/excel": "~2.1.0"

Yet when I run composer install, that library doesn't get installed:

composer show | grep excel

returns nothing.

And so every time I run my deployment script I get this error:

> php artisan clear-compiled
PHP Fatal error:  Uncaught Symfony\Component\Debug\Exception\FatalThrowableError: Class 'PHPExcel_Shared_Font' not found in /Users/Shared/dev/php/toters-api/config/excel.php:182
Stack trace:
#0 /Users/Shared/dev/php/toters-api/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/LoadConfiguration.php(60): require()
#1 /Users/Shared/dev/php/toters-api/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/LoadConfiguration.php(38): Illuminate\Foundation\Bootstrap\LoadConfiguration->loadConfigurationFiles(Object(Illuminate\Foundation\Application), Object(Illuminate\Config\Repository))
#2 /Users/Shared/dev/php/toters-api/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(203): Illuminate\Foundation\Bootstrap\LoadConfiguration->bootstrap(Object(Illuminate\Foundation\Application))
#3 /Users/Shared/dev/php/toters-api/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(267): Illuminate\Foundation\Application->bootstrapWith(Array)
#4 /Users/Shared/dev/php/toters-api/vendor/laravel/framew in /Users/Shared/dev/php/toters-api/config/excel.php on line 182

Fatal error: Uncaught Symfony\Component\Debug\Exception\FatalThrowableError: Class 'PHPExcel_Shared_Font' not found in /Users/Shared/dev/php/toters-api/config/excel.php on line 182

Symfony\Component\Debug\Exception\FatalThrowableError: Class 'PHPExcel_Shared_Font' not found in /Users/Shared/dev/php/toters-api/config/excel.php on line 182

which is an expected error as Composer is ignoring my maatwebsite/excel library!

Workaround

I use these steps to brute force it into working:

rm -rf vendor
rm composer.lock
composer install --no-scripts

but this is clearly an ugly and expensive hack (I've added it as a pre-hook in the envoyer auto deployment), and it works every time but it adds so much time to the auto-deployment process.

References

Question

How can I run a Composer command that forces this to work (but I must also avoid the composer update command because I don't want to update all my libraries during every deployment, as that would cause unpredictable updates to my code base)

Update

I just noticed that this library on our version supports an older version of PHP - could that have to do with it?

Update 2

Running composer require maatwebsite/excel returns the following:

composer require maatwebsite/excel
Using version ^3.0 for maatwebsite/excel
./composer.json has been updated
> php artisan clear-compiled
The compiled class file has been removed.
> php artisan ide-helper:generate
A new helper file was written to _ide_helper.php
Unexpected no document on Illuminate\Database\Eloquent\Model
Wrote expected docblock to /Users/Shared/dev/php/toters-api/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php
> php artisan ide-helper:models -N
Model information was written to _ide_helper_models.php
> php artisan optimize
Generating optimized class loader
The compiled class file has been removed.
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
    - Conclusion: remove laravel/framework v5.3.31
    - Conclusion: don't install laravel/framework v5.3.31
    - maatwebsite/excel 3.0.1 requires illuminate/support ^5.5 -> satisfiable by illuminate/support[v5.5.0, v5.5.16, v5.5.17, v5.5.2, v5.5.28, v5.5.33, v5.5.34, v5.5.35, v5.5.36, v5.5.37, v5.5.39, v5.5.40, v5.6.0, v5.6.1, v5.6.10, v5.6.11, v5.6.12, v5.6.13, v5.6.14, v5.6.15, v5.6.2, v5.6.3, v5.6.4, v5.6.5, v5.6.6, v5.6.7, v5.6.8, v5.6.9].
    - maatwebsite/excel 3.0.0 requires illuminate/support ^5.6 -> satisfiable by illuminate/support[v5.6.0, v5.6.1, v5.6.10, v5.6.11, v5.6.12, v5.6.13, v5.6.14, v5.6.15, v5.6.2, v5.6.3, v5.6.4, v5.6.5, v5.6.6, v5.6.7, v5.6.8, v5.6.9].
    - don't install illuminate/support v5.5.0|don't install laravel/framework v5.3.31
    - don't install illuminate/support v5.5.16|don't install laravel/framework v5.3.31
    - don't install illuminate/support v5.5.17|don't install laravel/framework v5.3.31
    - don't install illuminate/support v5.5.2|don't install laravel/framework v5.3.31
    - don't install illuminate/support v5.5.28|don't install laravel/framework v5.3.31
    - don't install illuminate/support v5.5.33|don't install laravel/framework v5.3.31
    - don't install illuminate/support v5.5.34|don't install laravel/framework v5.3.31
    - don't install illuminate/support v5.5.35|don't install laravel/framework v5.3.31
    - don't install illuminate/support v5.5.36|don't install laravel/framework v5.3.31
    - don't install illuminate/support v5.5.37|don't install laravel/framework v5.3.31
    - don't install illuminate/support v5.5.39|don't install laravel/framework v5.3.31
    - don't install illuminate/support v5.5.40|don't install laravel/framework v5.3.31
    - don't install illuminate/support v5.6.0|don't install laravel/framework v5.3.31
    - don't install illuminate/support v5.6.1|don't install laravel/framework v5.3.31
    - illuminate/support v5.6.10 conflicts with laravel/framework[v5.3.31].
    - illuminate/support v5.6.11 conflicts with laravel/framework[v5.3.31].
    - illuminate/support v5.6.12 conflicts with laravel/framework[v5.3.31].
    - illuminate/support v5.6.13 conflicts with laravel/framework[v5.3.31].
    - illuminate/support v5.6.14 conflicts with laravel/framework[v5.3.31].
    - illuminate/support v5.6.15 conflicts with laravel/framework[v5.3.31].
    - don't install illuminate/support v5.6.2|don't install laravel/framework v5.3.31
    - don't install illuminate/support v5.6.3|don't install laravel/framework v5.3.31
    - don't install illuminate/support v5.6.4|don't install laravel/framework v5.3.31
    - don't install illuminate/support v5.6.5|don't install laravel/framework v5.3.31
    - don't install illuminate/support v5.6.6|don't install laravel/framework v5.3.31
    - don't install illuminate/support v5.6.7|don't install laravel/framework v5.3.31
    - illuminate/support v5.6.8 conflicts with laravel/framework[v5.3.31].
    - illuminate/support v5.6.9 conflicts with laravel/framework[v5.3.31].
    - Installation request for laravel/framework (locked at v5.3.31, required as 5.3.*) -> satisfiable by laravel/framework[v5.3.31].
    - Installation request for maatwebsite/excel ^3.0 -> satisfiable by maatwebsite/excel[3.0.0, 3.0.1].


Installation failed, reverting ./composer.json to its original content.

which is expected, as the latest version of maatwebsite/excel requires laravel 5.5+,

but when I run composer require maatwebsite/excel:2.1, I still get an error:

./composer.json has been updated
> php artisan clear-compiled
The compiled class file has been removed.
> php artisan ide-helper:generate
A new helper file was written to _ide_helper.php
Tag Exists: @mixin \Eloquent in Illuminate\Database\Eloquent\Model
Tag Exists: @mixin \Illuminate\Database\Eloquent\Builder in Illuminate\Database\Eloquent\Model
Tag Exists: @mixin \Illuminate\Database\Query\Builder in Illuminate\Database\Eloquent\Model
> php artisan ide-helper:models -N
Model information was written to _ide_helper_models.php
> php artisan optimize
Generating optimized class loader
The compiled class file has been removed.
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
    - Installation request for maatwebsite/excel 2.1 -> satisfiable by maatwebsite/excel[v2.1.0].
    - Conclusion: remove laravel/framework v5.3.31
    - Conclusion: don't install laravel/framework v5.3.31
    - maatwebsite/excel v2.1.0 requires illuminate/filesystem 5.0.*|5.1.*|5.2.* -> satisfiable by illuminate/filesystem[v5.0.0, v5.0.22, v5.0.25, v5.0.26, v5.0.28, v5.0.33, v5.0.4, v5.1.1, v5.1.13, v5.1.16, v5.1.2, v5.1.20, v5.1.22, v5.1.25, v5.1.28, v5.1.30, v5.1.31, v5.1.41, v5.1.6, v5.1.8, v5.2.0, v5.2.19, v5.2.21, v5.2.24, v5.2.25, v5.2.26, v5.2.27, v5.2.28, v5.2.31, v5.2.32, v5.2.37, v5.2.43, v5.2.45, v5.2.6, v5.2.7].
    - don't install illuminate/filesystem v5.0.0|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.0.22|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.0.25|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.0.26|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.0.28|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.0.33|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.0.4|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.1.1|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.1.13|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.1.16|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.1.2|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.1.20|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.1.22|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.1.25|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.1.28|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.1.30|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.1.31|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.1.41|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.1.6|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.1.8|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.2.0|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.2.19|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.2.21|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.2.24|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.2.25|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.2.26|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.2.27|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.2.28|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.2.31|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.2.32|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.2.37|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.2.43|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.2.45|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.2.6|don't install laravel/framework v5.3.31
    - don't install illuminate/filesystem v5.2.7|don't install laravel/framework v5.3.31
    - Installation request for laravel/framework (locked at v5.3.31, required as 5.3.*) -> satisfiable by laravel/framework[v5.3.31].


Installation failed, reverting ./composer.json to its original content.

which is weird, as it should support Laravel 5.3 (my Laravel):

but my PHP version is 7.1.

解决方案

composer install is not like npm install. I'm pretty sure if you manually add a package like you did it's ignored, as composer.lock is already there.

  • Doing composer update would have worked.
  • Or adding the package by doing composer require maatwebsite/excel
  • Or removing composer.lock and then running composer install

Edit:

composer require maatwebsite/excel will attempt to install the latest version of that package but because you are using laraval v5.3.31 you should install maatwebsite/excel ~2.1.0 instead. Version 3 is for laraval ^5.5

  • composer require "maatwebsite/excel:~2.1.0"

这篇关于Composer安装实际上并未安装库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆