macOSでphpをアップデートする話

PHPのインストールとかって何度も繰り返さないので手順は忘れますよね。
今回はとりあえず、brewでインストールしたphpパッケージを最新にアップデートする方法をメモしておきます。

どうやってインストールしたのかが不明

phpインストールは様々な方法でインストールできます。
が、このPC(macOS)に入っているphpをどうやってインストールしたかこの記憶が曖昧でした。
「tarボールをローカルで展開してパスを当てているのかな?」などとは思いましたが…
解析がめんどくさくなりそうでしたので、
とりあえずphpのバージョンと実行コマンドのパスを確認してから思い出します。

$ php -v
PHP 8.0.10 (cli) (built: Aug 26 2021 15:36:17) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.10, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.10, Copyright (c), by Zend Technologies

$ which php
/usr/local/bin/php

はい、8.0.10古いですね。コマンドのパスが/usr/local/bin/phpでした。

/usr/local/bin/php具合が私が手動でインストールした感はないですねw

私だったら
/usr/local/php8.0に展開して
/usr/local/php/にシングルリンクして
/usr/local/php/bin/phpをパスに追加する
でしょうね…

結局のところ、だいたいbrewでやっている

phpインストールを試行錯誤するのも時間の無駄なので、一番インストールしてそうなbrewを確認…

$ brew -v
Homebrew 3.2.12
Homebrew/homebrew-core (git revision 052ef3e39f3; last commit 2021-09-20)
Homebrew/homebrew-cask (git revision cf80438826; last commit 2021-09-20)

brewは古いバージョンが入っていました。絶対 brewでphp入れているな(ただの感です)

根拠はないがBrewでphpをアップデートする

brewコマンドでphpをアップデートするのにインストールを指定します。
※ 先にbrewをアップデートしてたかもしれません

$ brew install php
php 8.0.10 is already installed but outdated (so it will be upgraded).

ほらね、8.0.10はこれで入っていました。

とやかくしてphpを最新化…

$ php -v
PHP 8.1.8 (cli) (built: Jul  8 2022 10:58:31) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.8, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.8, Copyright (c), by Zend Technologies

これで出来上がりました!

brewだけは最新にしておく

brew古いんですよね。3.2.12

これを最新にしておきます

$ brew upgrade
==> Upgrading 3 outdated packages:
$ brew -v
Homebrew 3.5.6
Homebrew/homebrew-core (git revision 2b433c2a329; last commit 2022-07-23)
Homebrew/homebrew-cask (git revision 2a0ab69f23; last commit 2022-07-23)

これでOKです!

忘れてはいけないcomposerも最新にする

composerもbrewで入れていたはずですので最新にしたと思います

現状を確認

$ composer -V
Composer version 2.1.8 2021-09-15 13:55:14
$ which composer
/usr/local/bin/composer

はいはい、インストール(アップデート)します…

$ brew install composer

Target /usr/local/bin/composer
already exists. You may want to remove it:
  rm '/usr/local/bin/composer'

ん?/usr/local/bin/composerがすでにあるので止まっている?

linkを削除して

$ rm '/usr/local/bin/composer'
$ composer -V
-bash: /usr/local/bin/composer: No such file or directory

再度実行

$ brew link composer
Linking /usr/local/Cellar/composer/2.3.10... 1 symlinks created.

インストール後のcomposerを確認…

$ composer -V
Composer version 2.3.10 2022-07-13 15:48:23

できました

終いに

今回はmacOSにおいて、phpを8.0.10から最新(8.1.8)にしました!

ってマイナーバージョン上がっているやん!

ま、パッケージをphpに指定しているからでしょうね。

実行環境をphp8.0系にする

8.1系でも問題ないですが、8.0系を使う場合にはphp@8.0パッケージをインストールすれば入ります。

$ brew install php@8.0

インストールしてもphpが優先されるようでphpの実行は最新(8.1系)が実行されます。

8.0系をコマンドで実行するには 最新(8.1系)のリンクを切って、8.0系をリンク貼ります

$ brew unlink php
Unlinking /usr/local/Cellar/php/8.1.8... 24 symlinks removed.
$ brew link php@8.0
Linking /usr/local/Cellar/php@8.0/8.0.21... 25 symlinks created.

これで8.0系がパスに通っています

$ php -v
PHP 8.0.21 (cli) (built: Jul  7 2022 13:13:21) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.21, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.21, Copyright (c), by Zend Technologies

ちゃんともとに戻すw

$ brew unlink php@8.0
Unlinking /usr/local/Cellar/php@8.0/8.0.21... 25 symlinks removed.

$ brew link php
Linking /usr/local/Cellar/php/8.1.8... 24 symlinks created.

$ php -v
PHP 8.1.8 (cli) (built: Jul  8 2022 10:58:31) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.8, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.8, Copyright (c), by Zend Technologies

開発環境ではそれぞれが可能にするべきである

開発環境で8.0系も8.1系も別プロジェクトで使う!

当たり前ですができます。

brewでインストールしたphpのパッケージは以下のパスでインストールされています。

/usr/local/opt/php@8.0/bin/php

/usr/local/opt/php@8.1/bin/php

開発IDE(PHPStorm)にてそれぞれをCLIに指定しましょう