2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

composer require時に起きたメモリー制限エラーとその解決策

Last updated at Posted at 2020-10-30

はじめに

画像投稿機能を実装する際に、AWSのS3に画像を保存するため
league/flysystem-aws-s3-v3をインストールしようとした際にこちらのエラーが出ました。

エラー文

Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Compose
r/DependencyResolver/RuleSetGenerator.php on line 129

メモリーが使い果たされて足りないとのこと。

解決策

インストール時にメモリーを一時的に解放してあげることで解決できる。
まず、現在割り当てられているメモリーを下記コマンドで確認してみる

$ php -r "echo ini_get('memory_limit').PHP_EOL;"

結果、512Mであった。
実際に、メモリ設定の制限を解除するために以下のコマンドを実行。

COMPOSER_MEMORY_LIMIT=-1 composer require 入れたいパッケージ名

COMPOSER_MEMORY_LIMIT=-1でメモリの制限を解除しているとのこと。
あくまでも一時的なものなので、メモリーが足りない際はその都度解放してあげればできる。

自分の場合、環境変数周りの設定が原因でコマンドが使用できず、解決できなかった。

[上記コマンド実行時]
'COMPOSER_MEMORY_LIMIT' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

別のやり方でもできるため、こちらのやり方についても紹介します。
やることは、php.iniファイルにてmemory limit=-1とするだけ。

php.ini
; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit=-1 

しかし、自分は***「php.iniファイルはどこだっけ?」***と困りました。
こちらのコマンドで確認できます。

$ php --ini | grep "php.ini"

参考
Laravel composer ライブラリインストール時のメモリエラー
php.iniファイルの場所をターミナルで確認する

本番環境

本番環境でインストールする際にも、同様にエラーがでました。
同じ設定を行ったが別のエラーがでました。

mmap() failed: [12] Cannot allocate memory

メモリーが足りないと。調べてみるとスワップの設定をすることで解決できる。
やり方は下記サイトを参考にしました。

参考:Amazon Linux2のswap領域を拡張する

スワップとは?

メモリの中身をハードディスクに移す機能。メモリが足りないときに行われる。
参考:swap

まとめ

今回は、composer require時に起きたメモリー制限エラーとその解決策について紹介しました。

以上

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?