web-dev-qa-db-fra.com

Erreur d'installation du compositeur: ZipArchive :: extractTo (): le chemin d'extraction complet dépasse MAXPATHLEN (260)

Quand je cours:

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

Je reçois la sortie suivante (en utilisant le drapeau -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]

J'ai même essayé d'utiliser le drapeau "--prefer-source" mais j'obtiens la même erreur. Y a-t-il un moyen de dire au compositeur d'augmenter le MAXPATHLEN? De quel chemin se plaint-on exactement?

15
Michael Lawson

essayez d'utiliser le --prefer-source flag

composer install --prefer-source
23
aaafly

Composer se plaint d'un chemin trop long pour PHP sous Windows lors du téléchargement. Windows a une longueur de chemin maximale (MAXPATHLEN) de 260 caractères, je ne pense donc pas que vous puissiez changer cela.

Lorsque j'ai eu ce problème lors de l'installation de Symfony, je l'ai corrigé en utilisant un chemin court pour le répertoire du projet (tel que C:\projects\myproject). 

Lors de l’examen de ce problème, j’ai trouvé qu’il pouvait également être corrigé à l’aide de l’indicateur --prefer-source lors de l’installation, comme suit:

php composer.phar install --prefer-source

Notez que vous avez besoin de git dans le chemin de votre shell Windows pour que cela fonctionne, car cela vérifie la source depuis Github plutôt que de télécharger le fichier de distribution. C'est aussi plus lent.

Notez également que vous devrez peut-être supprimer le dossier vendor/ avant de réinstaller à l'aide de l'indicateur --prefer-source:

rm -rf vendor/
15
Richard F

essayez de raccourcir le chemin d'accès complet à votre projet, tel que c://www/yii-project, car le système d'exploitation Windows n'autorisait pas le répertoire de plus de 250 caractères.

1
Omar Ali

Essayez de courir en ligne de commande

mklink /j <Link> <Target> 

pour créer un lien symbolique et réduire la longueur de votre chemin de fichier à moins de 260 caractères. Plus de détails https://technet.Microsoft.com/en-us/library/cc753194(v=ws.11).aspx

0
Nikeos

Je crois qu'il se plaint que ce C:/Users/Michael/AppData/Local/Composer/files/kartik-v/bootstrap-fileinput/f95a7e5fa0a9db1ead445e438653aa71e9f599f9.Zip est probablement supérieur à 256 caractères. D'après ce que je sais, vous ne pouvez pas avoir un chemin plus long que celui sous Windows. 

Pas sûr qu'il y ait une solution à cela. Vous pouvez probablement créer un chemin raccourci et y installer votre application.

0
Mihai P.