きっかけ
Laravel Passport を Laravel 6.0.4 へインストールする際に色々とはまって(PHP 7.2 から 7.4 にアップデートする必要があり)丸一日かかってしまったので、被害者がこれ以上増えないように記事にしました。
やり方
現在有効になっている PHP バージョンを確認する
amazon-linux-extras
(Amazon Linux 2 から使えるパッケージ管理ツール)の実行結果から現在 enable
になっているバージョンを確認します。
以下の例では 7.2
になっていることがわかります。
$ amazon-linux-extras | grep php
15 php7.2=latest enabled \
17 lamp-mariadb10.2-php7.2 available \
_ php7.3 available \
_ php7.4 available [ =stable ]
実際に php
のバージョンを確認すると、以下のような結果となります。
$ php -v
PHP 7.2.24 (cli) (built: Oct 31 2019 18:27:08) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
有効になっている PHP 7.2 を無効にする
ここの手順がすごい重要です。
ま、簡単なことですが。
$ sudo amazon-linux-extras disable php7.2
Beware that disabling topics is not supported after they are installed.
(たくさん表示されるので割愛)
最新の PHP 7.4 を有効にする
無事 php7.2
が disable
になっていることを確認後に、今度は php7.4
を有効化します。
$ amazon-linux-extras enable php7.4
You lack permissions to write to system configuration. /etc/yum.repos.d/amzn2-extras.repo
$ sudo amazon-linux-extras enable php7.4
なお、特権(root
)が必要です。参考までに一般アカウントでの実行結果も貼っておきます。
(個人的に思うことなんですけど、世の中の記事は大半が sudo
を必要としていない場面で使っていますね、あれやめてほしい)
PHP 7.4 をインストールする
さて、やっと本題です。
このやり方も色々と紹介されており、めちゃくちゃ混乱したのですが amazon-linux-extras
一択でいきましょう。
$ sudo amazon-linux-extras install php7.4
(たくさん表示されるので割愛)
PHP 7.4 にアップデートされたかを確認する
$ amazon-linux-extras | grep php
_ php7.2 available \
_ lamp-mariadb10.2-php7.2 available \
_ php7.3 available \
42 php7.4=latest enabled [ =stable ]
無事 php7.4=latest
が enable
になっていることが確認されました。
では、最後。
$ php -v
PHP 7.4.14 (cli) (built: Jan 14 2021 20:52:40) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
以上です。
今回は触れませんでしたが、これで Laravel 6.20.16 に無事アップデートできました。(いや、このためにやったんですけどね)
$ php artisan -V
Laravel Framework 6.20.16