はじめてQiitaに投稿します。
間違っている箇所もあるかもしれませんので、あればご指摘どんどんよろしくお願いします!
laravel6でlaravel/uiをインストールしようとしたら予期せぬエラーに出くわしたので、備忘録も含め投稿します。
環境
- Windows10
- php7.4.3
- wsl2(Ubuntu)
- laravel 6.20.34
きっかけ
laravelでlaravel/uiをインストールしようと下記のコマンド実行
php artisan require laravel/ui "^1.0" --dev
エラー発生
下記のエラーが発生した!!なんじゃこりゃ~!?
mmap() failed: [12] Cannot allocate memory
mmap() failed: [12] Cannot allocate memory
PHP Fatal error: Out of memory (allocated 1029541888) (tried to allocate 20480 bytes) in phar:///usr/local/bin/composer/src/Composer/Json/JsonFile.php on line 288
Fatal error: Out of memory (allocated 1029541888) (tried to allocate 20480 bytes) in phar:///usr/local/bin/composer/src/Composer/Json/JsonFile.php on line 288
原因
調べたところメモリの確保に失敗したらしい。。。
phpのメモリ上限を確認
php -i | grep memory_limit
// php -i はphp.iniの内容をコマンドラインから確認できる=>phpinfo();と同等の内容
下記が表示されてphpのメモリ使用量は無制限であることを確認
php -i | grep memory_limit
memory_limit => -1 => -1
Ubuntuのswap領域が原因の様子
参考サイトより、
Ubuntuでは標準ではswap領域が設定されていないよう
とのこと。
swap領域を確認
free -m
total used free shared buff/cache available
Mem: 1985 509 958 401 516 942
Swap: 0 0 0
参考サイトのとおり、下記コマンドを実行
// swapの確認(初期状態だと設定なし
cat /proc/swaps
Filename Type Size Used Priority
// 管理者権限になる
sudo su -
// swap用のディレクトリを作成
mkdir /var/swap
// 2Gのswap領域を作成
dd if=/dev/zero of=/var/swap/swap0 bs=1M count=2048
// パーミッション変更
chmod 600 /var/swap/swap0
// swap領域の割り当て
mkswap /var/swap/swap0
swapon /var/swap/swap0
// 起動時にswap領域が自動割当するように設定
echo '/var/swap/swap0 swap swap defaults 0 0' >> /etc/fstab
これで解決されたので、下記コマンドを再度実行。無事に実行完了
php artisan require laravel/ui "^1.0" --dev