Ошибка установки 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