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

Когда я бегу:

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

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

  - 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? На какой именно путь он жалуется?

5 ответов

Попробуйте использовать флаг --prefer-source

composer install --prefer-source

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

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

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

php composer.phar install --prefer-source

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

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

rm -rf vendor/

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

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

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

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

mklink /j <Link> <Target> 

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

Другие вопросы по тегам