Это странно. Я просто добавил это в свой файл composer.json:
"maatwebsite/excel": "~2.1.0"
Но когда я запускаю composer install, эта библиотека не устанавливается:
composer show | grep excel
ничего не возвращает.
И поэтому каждый раз, когда я запускаю свой сценарий развертывания, я получаю такую ошибку:
> 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
что является ожидаемой ошибкой, поскольку Composer игнорирует мою библиотеку maatwebsite/excel!
Я использую эти шаги, чтобы заставить его работать:
rm -rf vendor
rm composer.lock
composer install --no-scripts
но это явно уродливый и дорогостоящий прием (я добавил его в качестве предварительной ловушки при автоматическом развертывании посланник), и он работает каждый раз, но добавляет так много времени процессу автоматического развертывания.
Как я могу запустить команду Composer, которая заставляет это работать (но я также должен избегать команды composer update, потому что я не хочу обновлять все свои библиотеки во время каждого развертывания, так как это приведет к непредсказуемым обновлениям моей базы кода)
Я только что заметил, что эта библиотека в нашей версии поддерживает более старую версию PHP - это может быть связано с этим?
Запуск composer require maatwebsite/excel возвращает следующее:
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.
что ожидается, поскольку последняя версия maatwebsite/excel требует laravel 5.5+,
но когда я запускаю composer require maatwebsite/excel:2.1, я все равно получаю сообщение об ошибке:
./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.
что странно, поскольку он должен поддерживать Laravel 5.3 (мой Laravel):
но моя версия PHP - 7.1.
@ Jigs1212 Я знал, что кто-то предложит это, да, попробовал, и это сработало .. но я только что обновил свой вопрос, чтобы специально избегать использования обновления композитора b / c, у него есть нежелательные побочные эффекты
в этом случае вы должны использовать composer require и это имя пакета в вашем случае composer require maatwebsite / excel






В вашем случае вы можете попробовать composer require and that package name, то есть
composer require maatwebsite/excel
composer install не похож на npm install. Я почти уверен, что если вы добавите пакет вручную, как будто вы это сделали, он проигнорирует, поскольку composer.lock уже существует.
composer update сработало бы.composer require maatwebsite/excelcomposer.lock и затем запустите composer installРедактировать:
composer require maatwebsite/excel попытается установить последнюю версию этого пакета, но, поскольку вы используете laraval v5.3.31, вам следует вместо этого установить maatwebsite/excel ~2.1.0. Версия 3 для laraval ^5.5
composer require "maatwebsite/excel:~2.1.0"запуск composer quire maatwebsite/excel будет делать то же самое, что и добавление "maatwebsite/excel": "~2.1.0" в composer.json, так что этот шаг уже испробован
Using global Composer installation. > php artisan clear-compiled Warning: require(/home/forge/default/envoyer/releases/20180331050930/bootstrap/../vendor/autoload.php): failed to open stream: No such file or directory in /home/forge/default/envoyer/releases/20180331050930/bootstrap/autoload.php on line 17composer require - это не то же самое, что добавить его вручную и затем запустить установку, поскольку эти две команды делают разные вещи, когда присутствует файл composer.lock. Удалив файл composer.lock, вы, по сути, просто снова подключите всех поставщиков, если не кешируете.
Другая ошибка связана с тем, что вы удалили папку vendor, что вам не нужно было делать, теперь вам нужно будет просто снова выполнить composer install (после удаления файла блокировки).
Также похоже, что у вас есть атомарное управление версиями с envoyer, просто откатитесь, а затем выполните composer require maatwebsite/excel
Я пробовал использовать composer require .., но ошибки все еще возникают (см. Обновление 2)
Другая проблема, хорошо, что lib требует "illuminate/support": "^5.5", но laraval v5.3.31 устанавливает "illuminate/support": "v5.3.31". поскольку версии тесно связаны с laraval, вам нужно найти версию библиотеки, которая работает с v5.3.31, вы сможете отследить это на packagist.
Вместо этого установите это: packagist.org/packages/maatwebsite/excel#2.1.27 его v2.1 вместо v3.0 версии этой библиотеки..a главный версия означает ломка, вам нужен laraval 5.5 для запуска 3.0 ..
Я только что заметил ваше изображение в обновлении вопроса, вот что он говорит, у вас может быть php7.1, но у вас запущен laravel v5.3.31, поэтому вам нужна v2.1 библиотеки. После выпуска laravel v5.6 вся ломка начинается снова, что является одной из многих причин, по которым я не использую laraval.
быстрый вопрос, как узнать, какая версия illuminate/support i фактически была установлена? эта штука не отображается (или любая другая библиотека подсветки, если на то пошло), когда я запускаю composer show ... как подробно описано в обновлении 2, я уже пытался установить версию 2.1, запустив maatwebsite/excel:2.1, но это вызвало все другие ошибки ... так что я ' мне придется разрешить эту зависимость освещения / поддержки вручную
self.version = версия laravel, поэтому v5.3.31
Хорошо, чувак, я застрял ... как мне переопределить собственную версию библиотеки laravels? Я просто перечисляю это как требование в композиторе? Разве это не приведет к еще одному конфликту с laravel 5.3?
Но этот конфликт является происходит в версии 2.1 .. У меня делать есть проблема
Позвольте нам продолжить обсуждение в чате.
Я до сих пор не совсем уверен, почему большую часть времени ... всякий раз, когда я добавляю новую библиотеку ... Я просто добавляю запись в файл composer.json, а затем запуск composer install устанавливает библиотеку (или выводит ошибку, когда библиотека есть проблемы) и обновляет composer.lock. только на этот раз это не сработало .. Я имел для композитора требует
никогда, никогда, никогда не удаляйте composer.lock - если вы действительно не понимаете, что это означает, и не готовы принять последствия.
Вы получаете установку, просто позвонив:
composer require maatwebsite/excel:~2.1
Затем устанавливается версия 2.1.27.
Несколько слов о ваших сообщениях об ошибках. Там написано, что maatwebsite / excel v2.1.0 требует освещения / файловой системы 5.0.*|5.1.*|5.2.*. Этот пакет заменен на laravel в той же версии (вы можете «прочитать» это в composer.lock).
Но вы используете laravel 5.3.31, поэтому существует конфликт версий. Но более новая версия от maatwebsite / excel совместима с другими версиями lighting / *.
Почему удалять composer.lock - плохая идея?
Потому что это делает недействительным ваш сохраненный и, надеюсь, протестированный рабочий проект. После удаления журнала будет установлено много новых версий пакетов, и все придется протестировать повторно. В начале composer.lock есть ссылка для дальнейшего чтения
Вы пробовали обновление композитора?