composer のバージョンアップ方法

こんにちはー!むちょこです。

composer 自体のバージョンアップについて書いていきます。

MEMO

composer は PHP のパッケージ管理システムです。

「なんだそれ?」状態の方は先にこちらをご覧ください。

Composer入門

バージョンアップのタイミング

composer を利用しようと思ったら、こんな警告が出てきたことはありませんか?

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/

ざっくり意訳すると「君の使ってる composer のバージョンはもう廃止だから、アップグレードしたほうがいいよ!」って教えてくれています。親切!

徐々に非対応のパッケージも増えてくるため、これが出てきたら早めにバージョンアップを検討します。

バージョンアップ方法

コマンドを1つ実行するだけでバージョンアップできます。

バージョンアップのコマンド
$ composer self-update
実行例
$ composer --version
Composer version 1.8.3 2019-01-30 08:31:33

$ composer self-update
Updating to version 2.5.4 (stable channel).
   Downloading (100%)
Use composer self-update --rollback to return to version 1.8.3

$ composer --version
Composer version 2.5.4 2023-02-15 13:10:06

トラブルシューティング

パーミッションエラー

次のようなパーミッションエラーが発生することがあります。

[ErrorException]
  rename(/home/{your-name}/.cache/composer/composer-temp.phar,/usr/local/bin/composer): Permission denied

/usr/local/bin に対する権限が足りていない可能性がありますので、一時的に権限を付与してみてください。

以下の例では、 /usr/local/bin ディレクトリの権限設定を確認してから 777 に変更し、バージョンアップ完了後に元の権限設定に戻しています。

実行例
$ ls -la /usr/local
drwxr-xr-x.  2 root root 4096 Aug 26  2020 bin

$ sudo chmod 0777 /usr/local/bin/

$ composer self-update
Updating to version 2.5.4 (stable channel).
   Downloading (100%)
Use composer self-update --rollback to return to version 1.8.3

$ composer --version
Composer version 2.5.4 2023-02-15 13:10:06

$ sudo chmod 0755 /usr/local/bin/

$ ls -la /usr/local
drwxr-xr-x.  2 root root 4096 Feb 17 21:34 bin

他にもバージョンアップできない事例があれば @muchoco_dev 宛に教えていただけたら嬉しいです。分かる範囲で追記してみます:)