当我尝试在我的服务器上构建它时,我在 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.
尝试 composer update/install -o -vvv
并检查包是否从作曲家的缓存中加载。
如果是,请尝试清除作曲家的缓存或尝试添加 -cache-dir=/dev/null
。
要强制下载存档而不是克隆源,请将 --prefer-dist
选项与 --no-dev
结合使用。
否则,您可以尝试提高作曲家的进程超时值:
export COMPOSER_PROCESS_TIMEOUT=600 ( defaults to 300 )
composer config --global process-timeout 2000
最简单的方法是在 composer.json 文件中添加配置选项,添加 process-timeout 0,仅此而已。它可以在任何地方工作。
{
.....
"scripts": {
"start": "php -S 0.0.0.0:8080 -t public public/index.php"
},
"config": {
"process-timeout":0
}
}
"start": ["Composer\\Config::disableProcessTimeout","php -S 0.0.0.0:8080 -t public public/index.php"],
Composer 本身对允许远程 git 操作的时间有限制。查看 Composer documentation 确认环境变量 COMPOSER_PROCESS_TIMEOUT 控制着这一点。该变量设置为默认值 300(秒),这对于使用慢速 Internet 连接的大型克隆操作显然是不够的。
使用以下方法提高此值:
COMPOSER_PROCESS_TIMEOUT=2000 composer install
删除作曲家缓存对我有用。
rm -rf ~/.composer/cache/*
这是一个旧线程,但我发现超时的原因是运行 php 调试器(PHPStorm 正在侦听 xdebug 连接)导致进程超时。当我关闭 PHPStorm 或禁用 xdebug 扩展时,没有发生超时。
旧线程但对我来说是新问题。尝试在 Windows 10 主机内的 Ubuntu VM 上安装 google/apiclient(在 google/apiclient-services 上失败)时,此处没有解决方案。
在执行此作曲家安装/更新时注意到 Windows 的“反恶意软件可执行文件”占用了相当多的 CPU 周期后,我在 Windows 10 机器上禁用了“实时保护”,我的作曲家更新/安装工作!
希望对某人有所帮助。
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();
exceeded the timeout of 300 seconds
。所以它要么需要高于 300,否则超时不是问题(根据@nifr 和@wormhit 的答案,可能是缓存问题)。
我同意上面的大部分建议,但我遇到了同样的问题,对我有用的是删除供应商文件夹并重新运行 composer install
问候
这就是 NFS 慢的问题。 Composer 将缓存写入 NFS 目录。您必须全局安装 composer 并重写缓存路径。
这不起作用:
php composer.phar install
使用这个:
composer install
在此运行之前,您必须全局配置作曲家。看到这个https://getcomposer.org/doc/00-intro.md#globally
此外,您必须将此行添加到您的 config.json:
"config": {
"cache-dir": "/var/cache/composer"
}
为我工作。
php composer.php install --prefer-dist --no-dev
对我有用。/dev/shm/
来解决此问题。对于作曲家,您可以使用--cache-dir=/dev/shm/composer/cache
。在 this article 中阅读有关它的更多信息,其中针对 symfony2 的性能技巧以及 vagrant nfs 共享。很高兴你解决了你的问题。您可能仍会考虑接受我的回答,因为 11 票赞成 + 评论清楚地表明它对其他人有帮助。export COMPOSER_PROCESS_TIMEOUT=600
(默认为 300)