OSアップデート後にPHPが使えなくなり、解決にかなりハマったので備忘がてらまとめておきます。
Mac OSをMontereyにアップデートしたらPHPが使えなくなった
最近、仕事で貸与されているPCの交換があり、OSはMontereyでした。
数週間使って問題なさそうだったので、プライベートのマシンもOSアップデートしたところ、PHPが認識しなくなってしまいました。
諦めてphpenvでインストール進めたところ、エラーの連続・・
zlib
のインストールやdefault_configure_options
の修正など地道に潰していったら、タイトルのエラーにぶち当たりました。
ネット上の情報も少なく、解決にかなり時間が掛かったので、まとめておきます。
ローカル環境の構成
- Macbook Pro Late2017
- mac OS Monterey 12.2.1
- anyenv + phpenv
エラーの内容
コンソール
$ phpenv install 7.3.33
・
・
[Compiling]: /var/tmp/php-build/source/7.3.33
-----------------
| BUILD ERROR |
-----------------
Here are the last 10 lines from the log:
-----------------------------------------
/usr/local/opt/openssl@3/include/openssl/dh.h:200:1: note: 'DH_free' has been explicitly marked deprecated here
OSSL_DEPRECATEDIN_3_0 void DH_free(DH *dh);
^
/usr/local/opt/openssl@3/include/openssl/macros.h:182:49: note: expanded from macro 'OSSL_DEPRECATEDIN_3_0'
# define OSSL_DEPRECATEDIN_3_0 OSSL_DEPRECATED(3.0)
^
/usr/local/opt/openssl@3/include/openssl/macros.h:62:52: note: expanded from macro 'OSSL_DEPRECATED'
# define OSSL_DEPRECATED(since) __attribute__((deprecated))
^
3 warnings generated.
-----------------------------------------
ログファイルのエラー箇所
/var/tmp/php-build/source/7.3.33/ext/openssl/openssl.c:1491:51: error: use of undeclared identifier 'RSA_SSLV23_PADDING'
REGISTER_LONG_CONSTANT("OPENSSL_SSLV23_PADDING", RSA_SSLV23_PADDING, CONST_CS|CONST_PERSISTENT);
試行錯誤
「use of undeclared identifier 'RSA_SSLV23_PADDING'
」などでググると、openssl@3
がインストールされていることが原因のようで、openssl@1.1
の方にPATHを通すと解決するらしいが、自分の環境では解決せず・・・
解決方法
openssl@3
を削除した後にopenssl@1.1
を再インストールすることで解決しました。
$ brew uninstall openssl@3
$ rm -rf /usr/local/etc/openssl@3
$ brew reinstall openssl@1.1
$ php env install 7.3.33
openssl@3
削除した際に、以下の警告が出ていました。
openssl@1.1
の方にもopenssl@3
の影響がある → PHPインストールでコケてる?と思ってやってみたらうまくいった感じ。
Warning: The following may be openssl@3 configuration files and have not been removed!
If desired, remove them manually with `rm -rf`:
/usr/local/etc/openssl@1.1
openssl完全削除→新規インストールではうまくいかず、この警告を見落としてたらと思うと恐怖(笑)
最後に
バージョンアップ前に戻すことも考えたけど、TimeMachineのバックアップが古く、またOSバージョンアップ後数日経過しているので断念しました。
やっぱりバージョンアップする際は慎重にやった方が良いなと再認識した出来事だった。