phpenvでPHPをインストールする際に発生した「error: use of undeclared identifier ‘RSA_SSLV23_PADDING’」の解決方法

 
              PHPWeb                          
 
PHP

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バージョンアップ後数日経過しているので断念しました。

やっぱりバージョンアップする際は慎重にやった方が良いなと再認識した出来事だった。

えず

東京でフリーランスのWebエンジニアやっています。 今はPHPとGoをメインに、プライベートでは広く浅くをモットーにフロント〜インフラまで学習しています。 当面の目標はDevOps寄りのオールラウンダー。

PHPWeb
スポンサーリンク
えずをフォローする
えずブログ