さんごー日記。

映画や本やゲームの感想をゆるく記録したり、プログラミングの勉強をゆるく記録するゆるい日記です。

aws EC2でphpのcomposer updateでのエラー:The following exception is caused by a lack of memory or swap, or not having swap configured

phpのcomposer updateをしようと思ったらエラーが出てしまった。

]$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 4 installs, 5 updates, 0 removals
  - Updating paragonie/random_compat (v2.0.15 => v2.0.17): The following exception is caused by a lack of memory or swap, or not having swap configured
Check https://getcomposer.org/doc/articles/troubleshooting.md#proc-open-fork-failed-errors for details


  [ErrorException]
  proc_open(): fork failed - Cannot allocate memory


update [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--lock] [--no-custom-installers] [--no-autoloader] [--no-scripts] [--no-progress] [--no-suggest] [--with-dependencies] [--with-all-dependencies] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--apcu-autoloader] [--ignore-platform-reqs] [--prefer-stable] [--prefer-lowest] [-i|--interactive] [--root-reqs] [--] [<packages>]...

Cannot alocate memoryとか出てるからメモリ不足みたいな事なんですかねぇ。
エラー内容を見ていこう。

- Updating paragonie/random_compat (v2.0.15 => v2.0.17): The following exception is caused by a lack of memory or swap, or not having swap configured
Check https://getcomposer.org/doc/articles/troubleshooting.md#proc-open-fork-failed-errors for details

↓翻訳

  • paragonie / random_compatの更新(v2.0.15 => v2.0.17):次の例外は、メモリまたはスワップが不足しているか、またはスワップが設定されていないことが原因です

詳細については、https://getcomposer.org/doc/articles/troubleshooting.md#proc-open-fork-failed-errorsをチェックしてください。

スワップを設定していないってどういう事やろか。
とりあえず
https://getcomposer.org/doc/articles/troubleshooting.md#proc-open-fork-failed-errors
を見てみるか。

「free -m」をやってみろと書いてある。freeはメモリ使用量などを確認するUNIXコマンドですね。

$ free -m
             total       used       free     shared    buffers     cached
Mem:           987        442        545          0          2         83
-/+ buffers/cache:        356        631
Swap:            0          0          0

Swapの所を見ると割り当てはゼロのようです。
Swapを有効にする方法が上記のURLで紹介されています。
awsだとrootユーザーで作業する事は少ないと思うので、sudoを付けて以下のようにします。

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

再度composer updateしたらうまくいきました。

$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 4 installs, 5 updates, 0 removals
  - Updating paragonie/random_compat (v2.0.15 => v2.0.17): Loading from cache
  - Updating swiftmailer/swiftmailer (v6.0.2 => v6.1.2): Downloading (100%)       - Updating laravel/framework (v5.6.26 => v5.6.27): Loading from cache
  - Updating fzaninotto/faker (v1.7.1 => v1.8.0): Downloading (100%)
  - Updating sebastian/comparator (3.0.1 => 3.0.2): Downloading (100%)
  - Installing alaouy/youtube (2.2.1): Downloading (100%)
  - Installing doctrine/event-manager (v1.0.0): Downloading (100%)
  - Installing doctrine/cache (v1.7.1): Downloading (100%)
  - Installing doctrine/dbal (v2.8.0): Downloading (100%)
doctrine/cache suggests installing alcaeus/mongo-php-adapter (Required to use legacy MongoDB driver)
Writing lock file
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover
Discovered Package: alaouy/youtube
Discovered Package: davejamesmiller/laravel-breadcrumbs
Discovered Package: fideloper/proxy
Discovered Package: laravel/tinker
Discovered Package: laravelcollective/html
Discovered Package: nunomaduro/collision
Package manifest generated successfully.

おしまい。