web-dev-qa-db-ja.com

Composer=メモリ制限の更新

ホスティングでcomposer updateを実行する必要があるため、sshでログインし、comandを実行してみます。

composer update

laravel and composer instalationがある/ wwwフォルダー内

しかし、エラーが発生します: enter image description here

私のホスティングプロバイダーと連絡を取り、コマンドを実行するように指示します。

php -d memory_limit=512M composer update

このコマンドを実行しますが、「ファイルを開くことができませんでした:composer」

何をすべきか?ここのソルトンは何ですか?

19
Andrew

composer updateを実行すると、OSは設定されたパスを調べ、その名前の実行可能ファイルを見つけようとします。

php composer updateを実行すると、composer文字列はPHPのパラメーターとして扱われ、どのパスでも検索されません。実行するには完全なパスを指定する必要があります。

which composerを実行すると、OSがcomposer実行可能ファイルを見つけた場所がわかります。その後、PHPコマンドでフルパスを使用します。

$>which composer
/usr/local/bin/composer

$>php -d memory_limit=512M /usr/local/bin/composer update
...

512MBは少なすぎる可能性があることに注意してください。私の認識では、使用する依存関係の数と理論的に許可するさまざまなバージョンに応じて、1GB以上を喜んで取るということです。つまり、Symfony ~2.3を許可すると、Composerは、~2.7を使用する場合と比較して、より多くの可能なバージョンを処理します。

また、実稼働マシンでComposerを実行することは最良のアイデアではありません。Githubへのアクセス、アクセス資格情報の提供、VCSツールのインストールが必要になります。更新中にリモートホスティングサーバーのいずれかがオフラインの場合。すべての準備を行い、すべてのファイルを運用サーバーに移動する展開システムでComposerを使用することをお勧めします。

39
Sven

必要なだけのメモリを使用するように設定します。

COMPOSER_MEMORY_LIMIT=-1 composer update
12
diamondsea

composerで問題に直面しています

SO、composerメモリ使用量を制限するソリューションを探していました。

試しました(@Sven Answersから)

$ php -d memory_limit=512M /usr/local/bin/composer update

しかし、それは機能しませんでした

「Composerは内部的にmemory_limitを1.5Gに増やします。」

-> composer oficial website。

次に、動作するコマンドを見つけました:

$ COMPOSER_MEMORY_LIMIT=512M php composer.phar update

ただし、512では十分ではありません。

ソース: https://www.agileana.com/blog/composer-memory-limit-troubleshooting/

1
Diego Favero

Php.iniでmemory_limit値を変更できます

Php.iniファイルの制限を増やしてみてください

無制限の場合は-1を使用するか、2Gのような明示的な値を定義します

memory_limit = -1

注:Composer=は、内部的にmemory_limitを1.5Gに増やします。

ドキュメントを読む getcomposer.org

1

十分なメモリがある場合、composerは内部的にメモリを消費し、問題なく実行されます。特に、composerに指示する必要はありません。

スワップメモリ​​を増やしてみましたか?スワップメモリ​​を4096Mb(4GB)に増やしましたが、今ではすべてが見栄えがします。

最初に「Sudo free "を使用して使用可能なメモリとスワップメモリ​​を確認し、スワップを次のように構成します。

Debianの場合:

Sudo fallocate -l 4G /swapfile
Sudo dd if=/dev/zero of=/swapfile bs=4096k count=1048
Sudo chmod 600 /swapfile
Sudo mkswap /swapfile
Sudo swapon /swapfile

これを永続的にするには、これを/ etc/fstabファイルに追加します、/swapfile swap swap defaults 0 0

CentOSの場合:

[root@myserver]:/# cd /var
[root@myserver]:/var# touch swap.img
[root@myserver]:/var# chmod 600 swap.img
[root@myserver]:/var# mkswap /var/swap.img

[root@myserver]:/var# dd if=/dev/zero of=/var/swap.img bs=4096k count=1000
[root@myserver]:/var# mkswap /var/swap.img 
[root@myserver]:/var# swapon /var/swap.img

物理ボリュームのサイズに応じてbs = 1024kまたは2048kまたは8096kを変更することにより、スワップメモリ​​を増やすことができます。 'swapon'およびswapoffコマンドを使用して、違いを確認します。

'swappiness'をチェックします(60でうまくいくはずです)

cat /proc/sys/vm/swappiness
1
Cosmo Arun

AWSサーバーの大きさは? RAMが1GBしかない場合、php.iniで2GBのメモリ制限を設定しても役に立ちません。

サーバー側を増やしてさらにRAMを使用可能にしたくない場合は、SWAPを有効にすることもできます。

スワップを有効にする方法についてはこちらをご覧ください。 4GBを有効にしますが、通常は1GBしか使用しません。

出典:laracastサイトから入手

0
Rem