macOS mojave(10.14.6)のphpを7.3にアップデート(mysql opensslエラーのおまけつき)


背景

新規PJ(php)のローカル環境構築にあたり、
php spark serveというコマンド使ってね、と伝達うけて、
早速起動してみたところ、php7.2以上が必要とのエラーが。

php -vたたいてみると、
私のmacは、OS mojaveのデフォルトの7.1系だったので、
上位版を入れることにしました。

ボツ案:そうだ、phpenvで切り替えよう

普段nodeのバージョン切り替えにanyenv内のnodenv利用しているのですが、
anyenvにphpのバージョン切り替えられるのって入ってなかったっけ・・
って思ったら、あるじゃない、phpenvというものが。

phpのご本家で確認すると、最新のstable版は7.4.8とのことで、
anyenv install phpenvして、phpenv install 7.4.8
で楽勝じゃん!とか思ったのだが、

そもそも、「phpenv anyenv 7.4」とかで出てくる参考記事を見ていると、
他の方があげている記事のほとんどが、エラーだのライブラリが足りないだの、
けっこう手こずっていらっしゃる。例によってわたしもエラーになった。(爆)

かたや、「macos mojave php バージョン アップデート」でぐぐってみると、
なんか・・こっちのほうがシンプルにいきそうじゃない?

どうせエラーと戦うことになるならば、
phpenv経由で頑張って入れるより、brew経由のほうが楽そう
と思い、後者を選択。(皆さんの知見にいつも感謝しています)

結論:Homebrewでシステムのphpごとあげよう

基本は下記の方の記事をまるっと参考にしました。
@7.4のほうが新しいですが、とりあえず同じように@7.3でやってみました。

macOS Mojaveで最新のPHP(7.3)にVersion upする

homebrewは入っていたので

$ brew search php@7

と叩くと、インストールできる一覧がでます。

7.3をインストールします。

$ brew install [email protected]

わたしの場合はインストールにあたってはエラーは出なかったのですが、(もしかしたら、最初に試したphpenvのエラー解消のためのbrewコマンドがうまいこと作用したのかもしれない)
参考サイトのような

If you need to have [email protected] first in your PATH run:
  echo 'export PATH="/usr/local/opt/[email protected]/bin:$PATH"' >> ~/.bash_profile
  echo 'export PATH="/usr/local/opt/[email protected]/sbin:$PATH"' >> ~/.bash_profile

という指示も出なかったです。が、

$ echo 'export PATH="/usr/local/opt/[email protected]/bin:$PATH"' >> ~/.bash_profile
$ echo 'export PATH="/usr/local/opt/[email protected]/sbin:$PATH"' >> ~/.bash_profile
$ brew services start php

とやると、

Error: Formula `php` is not installed.

と怒られたので、

$ brew services start [email protected]

ってしてあげたら、いけました。
ターミナル再起動後、php -vたたくと、PHP 7.3.20に〜🙌

無事に新規PJのphp spark serveも通って、万事ハッピーに思えたのです。が。

mysqlでopensslのエラーが発生

さて、別PJ(rails)で、mysql.server startたたいたところ、
opensslのlibsslが無いよ―っていうエラーで起動しない。

こちら、今回のphpのバージョンアップが直接的な影響かは定かではないですが、
以前も一度brew経由でライブラリ入れたあとになったことがあったので、
またか〜って感じでした。

https://qiita.com/hirotech/items/d16988b79f7673fa2d31
https://qiita.com/yamazaki8934/items/48e65850873f3ecbee26

わたしの場合、1.0.2sがほしいよ―って怒られていて、
上記の参考記事の方たちは古いバージョンに切り替えて解決しているのですが、
私の場合、以前brew経由でopensslをインストールしなおした際に、
最新の1.1系のみになってしまったのですよね。
(今はbrew経由だと1.0系はサポート終了してて出てこない)

あ〜1.0.2sを入れてあげねば〜と思い、
たどり着いたアーカイブからインストール試みたのですが、
makeコマンド失敗するし、そもそもサポート外のものを入れるために頑張るこの感じ・・
逆にmysqlを再インストールしたほうがいいんじゃないか、
と半ば諦めつつも、下記の記事を発見。

opensslの読み込み不具合でMySQLが起動しない時の対処【Homebrew】

brew upgradeかけたら、mysqlのマイナーアップデートが走り〜・・・
終了後、ためしにmysql.server startたたいたら、通った。神か!

というわけで私の場合、
1.0.0系を意図的にインストールはしなかったけど、無事起動するようになりました。
upgradeで内部のリンクをよしなに処理してくれたのだろうか。。

以上、私的メモでした。