为什么作曲家会在300秒后安装超时?

时间:2013-09-20 13:15:06

标签: symfony timeout composer-php

当我尝试在我的服务器上构建它时,我在symfony2中创建了一个小项目,在解压缩symfony时总是失败。构建是好的,突然作曲家不会解压缩symfony,我没有改变任何东西。我尝试使用Jenkins构建,也尝试使用bash手动构建相同的结果。这不是权限问题,我服务器上的互联网连接也没问题。

Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
 - Installing symfony/symfony (v2.3.4)
 Downloading: 100%
[Symfony\Component\Process\Exception\ProcessTimedOutException]
The process "unzip '/path/vendor/symfony/symfony/6116f6f3
d4125a757858954cb107e64b' -d 'vendor/composer/b2f33269' && chmod -R u+w 'vendor/composer/b2f33269'" exceeded the timeout of 300 seconds.

10 个答案:

答案 0 :(得分:83)

尝试composer update/install -o -vvv并检查是否正在从编辑器的缓存加载包。

如果是,请尝试清除作曲家的缓存或尝试添加-cache-dir=/dev/null

要强制下载存档而不是克隆来源,请将--prefer-dist选项与--no-dev结合使用。

否则你可以尝试提高作曲家的进程超时值:

export COMPOSER_PROCESS_TIMEOUT=600   ( defaults to 300 )

答案 1 :(得分:31)

composer config --global process-timeout 2000

答案 2 :(得分:22)

Composer本身限制了允许远程git操作的时间。查看Composer documentation确认环境变量COMPOSER_PROCESS_TIMEOUT对此进行了管理。该变量设置为默认值300(秒),对于使用慢速Internet连接的大型克隆操作来说,这显然是不够的。

使用以下方法提高此值:

COMPOSER_PROCESS_TIMEOUT=2000 composer install

答案 3 :(得分:16)

最简单的方法是在composer.json文件中添加配置选项,添加进程超时0,这就是全部。它适用于任何地方。

{
  .....
  "scripts": {
    "start": "php -S 0.0.0.0:8080 -t public public/index.php"
  },
  "config": {
    "process-timeout":0
  }
}

答案 4 :(得分:4)

删除编辑器缓存对我有用。

rm -rf ~/.composer/cache/*

答案 5 :(得分:4)

默认情况下,Symfony组件的进程超时设置为60。这就是你得到这样的错误的原因:

[Symfony\Component\Process\Exception\ProcessTimedOutException]     
The process "composer update" exceeded the timeout of 60 seconds. 

<强>解决方案

将超时设置为5分钟或更长时间

$process = new Process("composer update");
$process->setTimeout(300); // 5 minutes
$process->run();

答案 6 :(得分:3)

这是一个旧线程,但是我发现超时的原因是运行php调试器(PHPStorm正在侦听xdebug连接),这导致进程超时。当我关闭PHPStorm或禁用xdebug扩展名时,没有发生超时。

答案 7 :(得分:1)

旧线程对我来说是新问题。尝试在Windows 10主机内的Ubuntu VM上安装google / apiclient(在google / apiclient-services上失败)时,这里没有解决方案。

在执行此Composer安装/更新时,注意到Windows的“抗恶意软件可执行文件”占用了大量CPU周期后,我在Windows 10计算机上禁用了“实时保护”,并且我的Composer更新/安装正常工作!

希望能帮助某人。

答案 8 :(得分:0)

这是NFS的问题。 Composer将缓存写入NFS目录。您必须全局安装composer并重写缓存路径。

这不起作用:

php composer.phar install

使用此:

composer install

在此之前,您必须全局配置composer。见https://getcomposer.org/doc/00-intro.md#globally

此外,您必须将此行添加到config.json:

"config": {
    "cache-dir": "/var/cache/composer"
}

适合我。

答案 9 :(得分:0)

我同意上面建议的大部分内容,但我遇到了同样的问题,对我有用的是删除供应商文件夹并重新运行 composer install

问候