Amazon linux 2でのphpの更新方法

# 症状
WordPressの管理者画面のサイトヘルスにphpのバージョンを7.3以上に上げてよ、という「おすすめの改善」が出てしまった。

# 環境
- AWS
- Amazon linux 2 t2.micro
- php7.2.30
- WordPress

# やりたいこと
phpをバージョンアップする。なんかよく分かんないし、最新にしちゃえ。

# やったこと
## 現在のバージョンを確認する 
```
$ php -v
PHP 7.2.30 (cli) (built: May  5 2020 18:04:45) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
```
WordPressで怒られたとおり。古い。

## SSHを使用して、AWS EC2 Linuxインスタンスに接続
いつもの方法で。macのターミナルを使いました。
参考：[Connecting to your Linux instance using SSH](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html) 

## amazon-linux-extrasをインストール　（済んでいれば飛ばしてOK）
which コマンドを使用して、amazon-linux-extras パッケージがインストールされていることを確認する。

```
$ which amazon-linux-extras
/usr/bin/amazon-linux-extras
```

amazon-linux-extras パッケージがインストールされていない場合は、yum を使用してインストールする。

```
$ sudo yum install -y amazon-linux-extras
```

## 利用可能なトピックのリストを表示

```
$ amazon-linux-extras
# 省略
 13  ruby2.4                  available    \
        [ =2.4.2  =2.4.4  =2.4.7  =stable ]
  _  php7.2                   available    \
        [ =7.2.0  =7.2.4  =7.2.5  =7.2.8  =7.2.11  =7.2.13  =7.2.14
          =7.2.16  =7.2.17  =7.2.19  =7.2.21  =7.2.22  =7.2.23
          =7.2.24  =7.2.26  =stable ]
  _  lamp-mariadb10.2-php7.2  available    \
        [ =10.2.10_7.2.0  =10.2.10_7.2.4  =10.2.10_7.2.5
          =10.2.10_7.2.8  =10.2.10_7.2.11  =10.2.10_7.2.13
          =10.2.10_7.2.14  =10.2.10_7.2.16  =10.2.10_7.2.17
          =10.2.10_7.2.19  =10.2.10_7.2.22  =10.2.10_7.2.23
          =10.2.10_7.2.24  =stable ]
# 省略
 30  squid4                   available    [ =4  =stable ]
  _  php7.3                   available    \
        [ =7.3.2  =7.3.3  =7.3.4  =7.3.6  =7.3.8  =7.3.9  =7.3.10
          =7.3.11  =7.3.13  =stable ]
# 省略
 42  php7.4                   available    [ =stable ]
# 省略
```

ずらずらと表示されるので、一部割愛しました。
この時点ではphp7.4がamazon-linux-extrasで使える最新のphpのようです。

# php7.4を適用
まず、古いphp7.2を止める。

```
$ sudo amazon-linux-extras disable php7.2
```

php7.4を有効化する。

```
$ sudo amazon-linux-extras enable php7.4
# 省略
 13  ruby2.4                  available    \
        [ =2.4.2  =2.4.4  =2.4.7  =stable ]
  _  php7.2                   available    \
        [ =7.2.0  =7.2.4  =7.2.5  =7.2.8  =7.2.11  =7.2.13  =7.2.14
          =7.2.16  =7.2.17  =7.2.19  =7.2.21  =7.2.22  =7.2.23
          =7.2.24  =7.2.26  =stable ]
  _  lamp-mariadb10.2-php7.2  available    \
        [ =10.2.10_7.2.0  =10.2.10_7.2.4  =10.2.10_7.2.5
          =10.2.10_7.2.8  =10.2.10_7.2.11  =10.2.10_7.2.13
          =10.2.10_7.2.14  =10.2.10_7.2.16  =10.2.10_7.2.17
          =10.2.10_7.2.19  =10.2.10_7.2.22  =10.2.10_7.2.23
          =10.2.10_7.2.24  =stable ]
# 省略
 30  squid4                   available    [ =4  =stable ]
  _  php7.3                   available    \
        [ =7.3.2  =7.3.3  =7.3.4  =7.3.6  =7.3.8  =7.3.9  =7.3.10
          =7.3.11  =7.3.13  =stable ]
# 省略
 42  php7.4=latest            enabled      [ =stable ]
# 省略
Now you can install:
 # yum clean metadata
 # yum install php-cli php-pdo php-fpm php-json php-mysqlnd
```

## トピックをインストール
上の "Now you can install:" の下2行をsudoする。1行ずつやってもいいが、&&でつないで実行する。

```
$ sudo yum clean metadata && yum install php-cli php-pdo php-fpm php-json php-mysqlnd
```

## インストール検証とバージョン確認
```
$ yum list installed php-cli php-pdo php-fpm php-json php-mysqlnd
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
インストール済みパッケージ
php-cli.x86_64                                                                                7.4.5-1.amzn2                                                                             @amzn2extra-php7.4
php-fpm.x86_64                                                                                7.4.5-1.amzn2                                                                             @amzn2extra-php7.4
php-json.x86_64                                                                               7.4.5-1.amzn2                                                                             @amzn2extra-php7.4
php-mysqlnd.x86_64                                                                            7.4.5-1.amzn2                                                                             @amzn2extra-php7.4
php-pdo.x86_64                                                                                7.4.5-1.amzn2                                                                             @amzn2extra-php7.4

$ php -v
PHP 7.4.5 (cli) (built: Apr 23 2020 00:10:21) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
```

やったね！最後にhttpd.serviceを再起動する。

```
$ sudo systemctl restart httpd.service
```

WordPressの管理画面のサイトヘルスを確認すると、
> サイトは現在のバージョンのPHP (7.4.5) を実行しています

になったので完了！


# 参考
- AWSの公式Q&A：https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-install-extras-library-software/
- AWS Discussion Forums：https://forums.aws.amazon.com/thread.jspa?messageID=908568