2015-03-19 22 views
15

当我运行:作曲安装错误: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?究竟在抱怨哪条路?

回答

0

我认为这是抱怨,这C:/Users/Michael/AppData/Local/Composer/files/kartik-v/bootstrap-fileinput/f95a7e5fa0a9db1ead445e438653aa71e9f599f9.zip可能是超过256个字符。从我所知道的情况来看,你不可能有比Windows更长的路径。

不确定是否有解决方案。您可能可以创建一个短路径并将应用程序安装在那里。

+0

感谢您的建议。我在[link] https://getcomposer.org/doc/04-schema.md#config找到[/ link],你可以在其中添加“config”:{“cache-dir”:“PATH”}给你的作曲家。 json文件。我再次运行安装,虽然它使用了新路径,但我仍然在同一地方收到相同的错误,并且文件路径少于90个字符。再次看看这个错误,我认为它不是缓存目录,而是更多的解压文件的路径。我不得不考虑重新配置WAMP的根网站目录以便以某种方式缩短它。 – 2015-03-19 14:24:10

22

尝试使用--prefer源标志

composer install --prefer-source 
+0

这实际上为我做了诡计。 - 首选源直接检查存储库。它需要更多时间,但不会遇到路径问题。 – Andreas 2015-05-31 11:50:03

+1

+1它也适用于我的Windows,**注意:**但'composer update --prefer-source'没有。只有在删除供应商文件夹并运行'install'后,我实现了克隆repos的情况。 – Armen 2016-06-06 17:07:16

+0

这在Windows 10 64位机器上完美适用于我。谢谢! – 2017-10-13 07:12:33

14

作曲家抱怨过长的PHP在Windows上下载的路径。 Windows的最大路径长度(MAXPATHLEN)为260个字符,所以我认为你不能改变它。

当我安装Symfony时遇到了这个问题,我通过使用项目目录的短路径(例如C:\ projects \ myproject)来修复它。

在调查这个问题,我发现它也可以通过安装的时候,像这样使用--prefer源标志固定:

php composer.phar install --prefer-source 

请注意,你需要的git在你的Windows shell路径此工作,因为这从Github检查源而不是下载分发文件。它也比较慢。

还要注意的是,你可能有再次安装使用--prefer-source标志之前删除vendor/文件夹:

rm -rf vendor/ 
1

尽量缩短像c://www/yii-project项目的完整路径,因为Windows操作系统不允许目录超过250个字符

+0

其实它是255个字符,据我记得 – bardzusny 2015-08-10 08:54:21

+0

这为我工作 – 2017-09-10 16:25:59