web-dev-qa-db-ja.com

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」を使用しようとしましたが、同じエラーが発生します。 composerにMAXPATHLENを増やすように指示する方法はありますか?正確にどのパスについて不平を言っていますか?

15
Michael Lawson

-prefer-sourceフラグを使用してみてください

composer install --prefer-source
23
aaafly

Composerは、ダウンロードのWindowsでPHPに対して長すぎるパスについて不平を言っています。Windowsの最大パス長(MAXPATHLEN)は260文字なので、変更できないと思います。

Symfonyのインストール時にこの問題が発生したときは、プロジェクトディレクトリ(C:\ projects\myprojectなど)の短いパスを使用して修正しました。

この問題を調査しているときに、次のように、インストール時に--prefer-sourceフラグを使用して修正することもできることがわかりました。

php composer.phar install --prefer-source

これを機能させるには、Windowsシェルパスにgitが必要であることに注意してください。これは、配布ファイルをダウンロードするのではなく、Githubからソースをチェックアウトするためです。また、遅いです。

また、vendor/フラグを使用して再インストールする前に、--prefer-sourceフォルダーを削除する必要がある場合があることにも注意してください。

rm -rf vendor/
15
Richard F

windowsオペレーティングシステムでは250文字を超えるディレクトリが許可されていないため、プロジェクトのフルパスをc://www/yii-projectのように短くしてみてください

1
Omar Ali

コマンドラインで実行してみてください

mklink /j <Link> <Target> 

シンボリックリンクを作成し、ファイルパスの長さを260文字未満に減らします。詳細 https://technet.Microsoft.com/en-us/library/cc753194(v = ws.11).aspx

0
Nikeos

これは不平を言っていると思いますC:/Users/Michael/AppData/Local/Composer/files/kartik-v/bootstrap-fileinput/f95a7e5fa0a9db1ead445e438653aa71e9f599f9.Zipはおそらく256文字以上です。私の知る限り、Windowsよりも長いパスを持つことはできません。

これに対する解決策があるかどうかはわかりません。おそらく、ショートパスを作成して、そこにアプリケーションをインストールすることができます。

0
Mihai P.