web-dev-qa-db-ja.com

Composer更新中に強制終了

問題が発生したので、Laravel 4プロジェクトに新しいパッケージをインストールしようとしました。しかし、php composer.phar updateを実行すると、次のようになります。

Loading composer repositories with package information
Updating dependencies (including require-dev)
Killed

インターネットで問題を探しましたが、メモリが問題であることがわかりました。十分なRAMが利用できないと思います。 composerは実際により多くのRAMを必要としますか?

72
user3038158

「強制終了」メッセージは通常、プロセスが大量のメモリを消費したことを意味するため、可能であればシステムにメモリを追加する必要がある場合があります。この回答を書いている時点では、composer updateを特定の状況で機能させるために、仮想マシンのメモリを少なくとも768MBに増やす必要がありました。

ただし、ライブサーバーでこれを行う場合は、composer updateを使用しないでください。代わりにすべきことは:

  1. composer updateをローカル環境(ローカル物理マシン、または開発仮想マシン)で実行します
  2. Composer.lockファイルをアップロードまたはgit Push
  3. ライブサーバーでcomposer installを実行します

composer installは.lockファイルから読み取り、すべてのパッケージの最新バージョンを見つけるのではなく、毎回まったく同じバージョンをフェッチします。これにより、アプリが壊れにくくなり、composerが使用するメモリが少なくなります。

詳細はこちら: https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file

196
Andreas

私のように、メモリ不足のmicro VMを使用している場合は、スワップファイルを作成するとうまくいきます。

free -m
mkdir -p /var/_swap_
cd /var/_swap_
#Here, 1M * 2000 ~= 2GB of swap memory
dd if=/dev/zero of=swapfile bs=1M count=2000
mkswap swapfile
swapon swapfile
chmod 600 swapfile
echo "/var/_swap_/swapfile none swap sw 0 0" >> /etc/fstab
#cat /proc/meminfo
free -m

ところで、ファイルの別の場所/ファイル名/サイズを自由に選択してください。
/varはおそらく最良の場所ではありませんが、どの場所になるかわかりません。小さなサーバーは主にテスト目的で使用されるため、ほとんど気にしません。

45
Balmipour

ホスティングのメモリが不足しているためです。 this tutorialを確認してください。

14

残念ながらcomposerには多くのRAMと処理能力が必要です。ここに私がやったいくつかのことがあります。これは私のクラウドプレイペン環境にありました。

  1. 単にRAMが不足している可能性があります。スワップを有効にする: https://www.digitalocean.com/community/search?query=how+to+add+swap (注:私は最高だと思う練習は別のパーティションを追加することです。Digitaloceanのガイドはその環境に適しています)
  2. service mysql stop(DB/mem-hogサービスを強制終了して、いくつかのRAMを解放します-再度起動することを忘れないでください!)
  3. topを実行しているセカンダリターミナルセッションを使用して、プロセスが完了するまでメモリ/スワップ消費を監視します。
  4. composer.phar update --prefer-dist -vvv(詳細な出力[作業中にいくつかの点でハングする]およびdistro Zipファイルを使用)。 --dry-runも試してみませんか?
  5. Composerは、PHPの古いバージョン(5.3xなど)で実行速度が遅いことを明らかに知っています。私にとっては5.5.9ではまだ遅かった...
8
alirobe

余分なメモリを必要としないDigitalOceanの修正-スワップの有効化、1gbの例を次に示します。

以下のターミナルで実行

/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
/sbin/mkswap /var/swap.1
Sudo /sbin/swapon /var/swap.1

上記のソリューションは、次回のリブートまで機能します。その後、スワップを再アクティブ化する必要があります。再起動間で保持するには、fstabにスワップファイルを追加します。

Sudo nano /etc/fstab

上記のファイルを開き、ファイルに以下の行を追加します

/var/swap.1 swap swap sw 0 0

サーバーを再起動します。 Composer requireは正常に動作します。

3
Hemamalini

このようなものを試すことができます

php -d memory_limit=4G /usr/local/bin/composer update
1
GiorgosK

WP CLIのComposer構成で、通常はpreferred-install"dist"~/.wp-cli/packages/composer.jsonに設定してみてください。

0
XedinUnknown

php -d memory_limit = 5G composer.pharアップデート

0

Laravel/Homestead(Vagrant Windows)で解決しました

1)Homestead.yamlを編集し、メモリを2048から4096に増やします

2)浮浪者

3)浮浪者ssh

4)この行を使用して、選択したフォルダーにSymfonyをインストールします(ファイルなしである必要があります)

COMPOSER_MEMORY_LIMIT=-1 composer create-project symfony/website-skeleton . -s dev
0
davidjimenez75

composer self-updatecomposer clearcacheを実行し、ベンダーとcomposer.lockを削除してローカル環境を再起動してからphp -d memory_limit=-1 /usr/local/bin/composer installを実行します

0
farnoosh