AmazonLinux2にamazon-linux-extrasでPHP7.4をインストールしてみた

## 概要
AWSにてAmazon Linux 2のAMIでEC2を起動させると、PHP7.2の環境がインストールされている。
PHPのバージョンを上げたいが、どうやらAmazon Linux 2に搭載されているamazon-linux-etrasと呼ばれるCUIアプリでアップデートできるようだ。
今回は、amazon-linux-etrasを利用して、PHPのバージョンを7.4に挙げる方法を確認する。

## amazon-linux-extrasって？
amazon-linux-extrasはAmazonLinux2にインストールされているパッケージを管理するツールのようだ。
yumコマンドの代わりに必要なパッケージをインストールすることができる。

利用できるコマンドは以下の通り。

* help
* list
* info
* install

## helpコマンド
helpコマンドを入力すると、以下のように使えるコマンド一覧とamazon-linux-extrasとは何者なのかということを表示してくれる。
入力コマンド

```
$ amazon-linux-extras help
```

実行結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1790108/b87f5270-d60d-e086-74cf-e3e271b4851f.png)

## listコマンド
listコマンドは利用できるパッケージを表示してくれる。
実行結果は以下のような感じ。
入力コマンド

```
$ amazon-linux-extras list
```

実行結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1790108/02ffbce6-fd7a-7482-da2f-17e315546f61.png)

## infoコマンド
書くパッケージの詳細情報を表示するコマンド。
試しにvimの情報を確認してみる。

入力コマンド

```
$ amazon-linux-extras info vim
```

実行結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1790108/a0b4dbfa-54c4-ec0d-a125-6c1c36902ab6.png)

詳細情報といっても、yumで実行される情報が表示されるだけのようだ。
逆に言うと、何がインストールされるかわかればある程度何が行われているか確認できるということか。

## install
パッケージをインストールするコマンド。
今回はこのコマンドを実行する。

# 早速PHP7.4をインストールしてみる
では早速PHP7.4をインストールしてみる。

まずはインストールされているPHPバージョンを確認する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1790108/03e3eb4f-d3d5-21f2-6b3a-a49e492910e7.png)

7.2が入っていることを確認。

PHP 7.4をインストールするために、以下のコマンドを実行する。

```
$ amazon-linux-extras install php7.4
```

結果は残念ながらダメとのこと。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1790108/f0b13f74-8a57-0337-ff65-c23e83006738.png)

もともとあるモジュールと競合するからダメとの通達のようだ。

おそらくは、以下のモジュールが動作していることが原因だと考えられる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1790108/d36a0222-b393-3354-06a9-1e381aecacaf.png)

# PHP7.2をアンインストールする。
ではPHP7.2をアンインストールすればうまくいくのではないかと調査。
以下のページにて、アンインストールする方法が記載されていることを見つけた。
[EC2(Amazon Linux2)でPHP8.0にバージョンアップしてLaravel8をインストール](https://omkz.net/ec2-php8-laravel8/)

早速試してみる。

まずはパッケージアップデート

```
$ sudo yum update -y
```

PHP関連のソフトを削除

```
$  sudo yum -y remove php-*
```

amazon-linux-extrasをアップデート

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

一応アップデートされた？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1790108/c07bf31e-3486-9539-2aee-0f0220c7564b.png)

次にamazon-linux-extrasで利用中のlamp構成のインストールを無効にする。(disableなんてコマンドあったんだ。。。)

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

enabledからavailavleになっていることを確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1790108/dd4b47d2-fb13-aa54-f1e2-0a519d5b92d3.png)

最後にphp7.4をインストール。

```
$ sudo amazon-linux-extras install php7.4
```

php7.4がenableになっていることを確認。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1790108/6887da76-1b47-4ef9-2e9a-b530870b2069.png)


また、バージョン情報からもアップデートされていることが確認できる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1790108/2b334abd-d58e-224b-cee8-3b85e5fa6398.png)

ただ、xdebugのモジュールが読み込めないとエラーが出る。

どうやらxdebugのモジュールとPHPのバージョンが一致しないとエラーになるようだ。

以下のコマンドを実行することで解消できることを確認した。

```
$ sudo yum install php-pear
$ sudo yum install php-devel
$ sudo pecl install xdebug
```

## 最後に
何とかPHPのバージョンを上げることができた。
次はLaravelの開発環境を準備していく。