Mac CatalinaにてPHPバージョンを7.3から7.4にアップグレード

# はじめに
MacOS内のPHPバージョンを7.3から7.4にあげる必要があったのですが、すんなりいかなかったので備忘録として残しておきます。

# 手順

#### 1. 現在のPHPバージョン確認
まずは現在のPHPバージョンを確認します。

```sh
$ php -v
PHP 7.3.11 (cli) (built: Jun  5 2020 23:50:40) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.11, Copyright (c) 1998-2018 Zend Technologies
```
7.3ですね。

#### 2. HomebrewにてPHP7.4のインストール
Homebrewにて7.4をインストールします。

まずはHomebrewをアップデート

```sh
$ brew update
```

7.4のインストール

```sh
$ brew install php@7.4
Error: Permission denied @ apply2files - /usr/local/share/locale/cs/LC_MESSAGES/libidn2.mo
Warning: Already linked: /usr/local/Cellar/libidn2/2.3.1
To relink, run:
  brew unlink libidn2 && brew link libidn2
```

残念。エラーです。

リンクが影響しているということなので言われた通りリンクを貼り直してみます

```sh
$ brew unlink libidn2
Unlinking /usr/local/Cellar/libidn2/2.3.1... Error: Permission denied @ apply2files - /usr/local/share/locale/cs/LC_MESSAGES/libidn2.mo
```

Permissionで怒られました。
権限変更してみます。

```sh
$ sudo chown -R $(whoami) /usr/local
chown: /usr/local: Operation not permitted
```
失敗！
High Sierraから/usr/localの権限変更ができなくなったようです。

階層絞って再度やってみます。

```sh
$ sudo chown -R $(whoami) /usr/local
```

うまくいったぽいので再チャレンジ

```sh
$ brew unlink libidn2 && brew link libidn2 

Unlinking /usr/local/Cellar/libidn2/2.3.1... 43 symlinks removed.
Linking /usr/local/Cellar/libidn2/2.3.1... 51 symlinks created.
```
できた

これでようやくインストールできそうです。

```sh
$ brew install php@7.4 
（中略）
To enable PHP in Apache add the following to httpd.conf and restart Apache:
    LoadModule php7_module /usr/local/opt/php@7.4/lib/httpd/modules/libphp7.so

    <FilesMatch \.php$>
        SetHandler application/x-httpd-php
    </FilesMatch>

Finally, check DirectoryIndex includes index.php
    DirectoryIndex index.php index.html

The php.ini and php-fpm.ini file can be found in:
    /usr/local/etc/php/7.4/

php@7.4 is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula.

If you need to have php@7.4 first in your PATH, run:
  echo 'export PATH="/usr/local/opt/php@7.4/bin:$PATH"' >> ~/.zshrc
  echo 'export PATH="/usr/local/opt/php@7.4/sbin:$PATH"' >> ~/.zshrc

For compilers to find php@7.4 you may need to set:
  export LDFLAGS="-L/usr/local/opt/php@7.4/lib"
  export CPPFLAGS="-I/usr/local/opt/php@7.4/include"


To have launchd start php@7.4 now and restart at login:
  brew services start php@7.4
Or, if you don't want/need a background service you can just run:
```

ようやくできました。

#### 3. PHP7.4の適用

パスを通して

```sh
$ echo 'export PATH="/usr/local/opt/php@7.4/bin:$PATH"' >> ~/.zshrc
$ echo 'export PATH="/usr/local/opt/php@7.4/sbin:$PATH"' >> ~/.zshrc
```

PHPをリスタートして

```sh
$ brew services start php@7.4
```

変更を反映すれば

```sh
$ source ~/.zshrc
$ php -v
PHP 7.4.21 (cli) (built: Jul 12 2021 11:52:30) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.21, Copyright (c), by Zend Technologies
```
バージョンが7.4へと更新されました！


# おわりに
一瞬でいけるかと考えてましたが思いの外時間かかりました。
誰かの助けになれば幸いです！

# 参考
https://qiita.com/keisuke-333/items/e3f85b693600332ae595

https://github.com/Homebrew/legacy-homebrew/issues/31794

https://alphacast.jp/mac/mac-high-sierra-%E3%81%8B%E3%82%89-usr-local-%E3%82%92%E6%A8%A9%E9%99%90%E5%A4%89%E6%9B%B4%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%9F/