Symfony2で作成した小さなプロジェクトをサーバー上でビルドしようとすると、symfonyを解凍すると常に失敗します。ビルドは正常で、突然composerは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自体は、リモートgit操作を許可する期間に制限を課します。 Composer documentation を見ると、環境変数COMPOSER_PROCESS_TIMEOUTがこれを管理していることが確認されます。変数はデフォルト値300(秒)に設定されますが、これは低速のインターネット接続を使用した大規模なクローン操作には明らかに不十分です。
以下を使用してこの値を上げます。
COMPOSER_PROCESS_TIMEOUT=2000 composer install
最も簡単な方法は、composer.jsonファイルに構成オプションを追加し、process-timeout 0を追加するだけです。どこでも動作します。
{
.....
"scripts": {
"start": "php -S 0.0.0.0:8080 -t public public/index.php"
},
"config": {
"process-timeout":0
}
}
composer=キャッシュは私のために働いた。
rm -rf ~/.composer/cache/*
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();
これは古いスレッドですが、タイムアウトの原因がphpデバッガーの実行(PHPStormがxdebug接続をリッスンしている)であることがわかりました。これがプロセスのタイムアウトを引き起こしました。 PHPStormを閉じたとき、またはxdebug拡張機能を無効にしたとき、タイムアウトは発生しませんでした。
古いスレッドですが、私にとっては新しい問題です。 Windows 10ホスト内のUbuntu VMにgoogle/apiclientをインストールしようとすると(google/apiclient-servicesで失敗しました)、ここで解決策は機能しませんでした。
このcomposer install/updateを実行すると、Windowsの「マルウェア対策実行可能ファイル」がかなりのCPUサイクルを消費することに気付いた後、Windows 10マシンで「リアルタイム保護」を無効にし、composer update/installは機能しました!!
それが誰かを助けることを願っています。
これがNFSの低速化の問題です。 Composer= NFSディレクトリへのキャッシュの書き込み。composer=グローバルにインストールし、キャッシュパスを書き換える必要があります。
これは機能しません:
php composer.phar install
これを使用して:
composer install
この実行の前に、config composer globally。これを参照してください。 https://getcomposer.org/doc/00-intro.md#globally
また、config.jsonに次の行を追加する必要があります。
"config": {
"cache-dir": "/var/cache/composer"
}
私のために働く。