Ошибка установки композитора: ZipArchive:: extractTo(): полный путь экстракции превышает MAXPATHLEN (260)

Когда я запускаю:

php composer.phar require kartik-v/yii2-widgets "*"

Я получаю следующий вывод (используя флаг -vvv verbose):

  - Installing kartik-v/bootstrap-fileinput (v4.1.7)
Downloading https://api.github.com/repos/kartik-v/bootstrap-fileinput/zipball/f95a7e5fa0a9db1ead445e438653aa71e9f599f9
    Downloading: connection...
    Downloading: 0%
    Downloading: 5%
    ...
    Downloading: 95%
    Downloading: 100%
    Downloading: 100%
Writing C:/Users/Michael/AppData/Local/Composer/files/kartik-v/bootstrap-fileinput/f95a7e5fa0a9db1ead445e438653aa71e9f599f9.zip into cache
    Extracting archive

  [ErrorException]
  ZipArchive::extractTo(): Full extraction path exceed MAXPATHLEN (260)

Exception trace:
 () at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Downloader/ZipDownloader.php:79
 Composer\Util\ErrorHandler::handle() at n/a:n/a
 ZipArchive->extractTo() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Downloader/ZipDownloader.php:79
 Composer\Downloader\ZipDownloader->extract() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Downloader/ArchiveDownloader.php:44
 Composer\Downloader\ArchiveDownloader->download() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Downloader/DownloadManager.php:201
 Composer\Downloader\DownloadManager->download() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Installer/LibraryInstaller.php:156
 Composer\Installer\LibraryInstaller->installCode() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Installer/LibraryInstaller.php:87
 Composer\Installer\LibraryInstaller->install() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Installer/InstallationManager.php:152
 Composer\Installer\InstallationManager->install() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Installer/InstallationManager.php:139
 Composer\Installer\InstallationManager->execute() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Installer.php:578
 Composer\Installer->doInstall() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Installer.php:225
 Composer\Installer->run() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Command/RequireCommand.php:154
 Composer\Command\RequireCommand->execute() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:253
 Symfony\Component\Console\Command\Command->run() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:874
 Symfony\Component\Console\Application->doRunCommand() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:195
 Symfony\Component\Console\Application->doRun() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Console/Application.php:147
 Composer\Console\Application->doRun() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:126
 Symfony\Component\Console\Application->run() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Console/Application.php:84
 Composer\Console\Application->run() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/bin/composer:43
 require() at C:\ProgramData\ComposerSetup\bin\composer.phar:25


require [--dev] [--prefer-source] [--prefer-dist] [--no-progress] [--no-update] [--update-no-dev] [--update-with-dependencies] [--ignore-platform-reqs] [--sort-packages] [packages1] ... [packagesN]

Я даже пытался использовать флаг "-prefer-source", но я получаю ту же ошибку. Есть ли способ сказать композитору увеличить MAXPATHLEN? На какой путь он жалуется?

Ответ 1

попробуйте использовать флаг - предпочитаемый источник

composer install --prefer-source

Ответ 2

Composer жалуется на путь, который слишком длинный для PHP в Windows при загрузке. У Windows максимальная длина пути (MAXPATHLEN) составляет 260 символов, поэтому я не думаю, что вы можете это изменить.

Когда у меня возникла эта проблема при установке Symfony, я исправил ее, используя короткий путь для каталога проекта (например, C:\projects\myproject).

При исследовании этой проблемы я обнаружил, что ее можно также установить с помощью флага -prefer-source при установке, например:

php composer.phar install --prefer-source

Обратите внимание, что вам нужно git в вашем пути оболочки Windows, чтобы это работало, поскольку это проверяет источник из Github, а не загружает файл распространения. Он также медленнее.

Обратите внимание также, что вам, возможно, придется удалить папку vendor/ перед установкой снова, используя флаг --prefer-source:

rm -rf vendor/

Ответ 3

попытайтесь сократить свой полный путь проекта, как c://www/yii-project, потому что операционная система Windows не разрешает каталогу более 250 символов

Ответ 4

Я считаю, что он жалуется, что это C:/Users/Michael/AppData/Local/Composer/files/kartik-v/bootstrap-fileinput/f95a7e5fa0a9db1ead445e438653aa71e9f599f9.zip, вероятно, более 256 символов. Из того, что я знаю, у вас не может быть пути дольше, чем в Windows.

Не уверен, что есть решение. Вероятно, вы можете создать короткий путь и установить там свое приложение.

Ответ 5

Попробуйте запустить в командной строке

mklink /j <Link> <Target> 

чтобы создать символическую ссылку и уменьшить длину вашего файла до менее 260 символов. Подробнее https://technet.microsoft.com/en-us/library/cc753194(v=ws.11).aspx