composer でメモリエラー、composer2

PHP
この記事は約3分で読めます。

composer は phpのパッケージ管理システムです。実行ファイルはcomposer.phar でphp archive という圧縮されたされたphpファイル群です。

いつもお世話になっているのですが、composer 自体、メモリを使います。大きなプロジェクトになると、composer update するとメモリが足りない!というエラーメッセージが表示されることがあります。

対処方法1

メモリ制限を外してコマンドラインを実行する

COMPOSER_MEMORY_LIMIT=-1 $(which composer) update

対処方法2

copmoser バージョン2 を使用する

Composer 2.0 is now available!
...

メモリの使用量と速度がかなり改善しているので、できれば乗り換えた方が良いです。

注意:動作しているプロジェクトで使用しているパッケージ群が composer2 に対応している必要があります。プロジェクトをディレクトリバックアップしてから行いましょう。プロジェクトが動作しなくなる可能性があります。

composer 自体は 1,2 を行き来できますので、 あとで1に戻すことができます。

composer アップグレード方法

現在のバージョンを確認します。

composer --version

アップデートします。

# 以下のいずれかを実施してください
composer self-update -–2
composer selfupdate -–2

プロジェクトをアップデートします。

composer update

使用しているフレームワーク(Laravel / CakePHP など)のバージョンによっては、不要なこともあります。個人的にはバックアップを取ってから、実行しておいた方が良いと思います。

結論

ホスティングサーバーのデフォルトのcomposer は、バージョン1になっていることがあります。

ホスティングのユーザーパスにcomposer2を置いて、既存のcomposerを使わず、自前のcomposerを使うように最初から設定しておくことがお勧めです。

おまけ

以下は、composer1 でdryrun した時ですが、#StandWithUkraine のハッシュタグが付いていました。

$ composer --dry-run update
Loading composer repositories with package information
Warning from https://repo.packagist.org: Support for Composer 1 is deprecated and some packages will not be available. You should upgrade to Composer 2. See https://blog.packagist.com/deprecating-composer-1-support/
Info from https://repo.packagist.org: #StandWithUkraine
Updating dependencies (including require-dev)

タイトルとURLをコピーしました