MacのMojave環境にphpenvでphpをインストールしようとしたら何回か躓いたのでその記録です。

phpenvのインストール

anyenv経由でnodenvとrbenvを使用してる環境からのスタートです。
今回はphpのバージョン管理をしたかったのでphpenvをインストールします。

$ anyenv install phpenv
.
.
.
Install phpenv succeeded!
Please reload your profile (exec $SHELL -l) or open a new session.

インストールできました!
exec $SHELL -lでシェルを再起動するか、新しくセッションを始めろとメッセージがあるのでシェルを再起動します。

$ exec $SHELL -l

これでphpenvのインストールは完了です!

phpのインストール

phpenvのインストールができたので、phpのインストールに入ります。
今回、利用したいバージョンは5.6.40です。

まず、使用可能なバージョンを表示します。

$ phpenv install -l
Available versions:
.
.
.
5.6.40
.
.

5.6.40があることが確認できましたので、インストールします。

$ phpenv install 5.6.40
.
.
-----------------
|  BUILD ERROR  |
-----------------

Here are the last 10 lines from the log:

-----------------------------------------
configure: WARNING: This bison version is not supported for regeneration of the Zend/PHP parsers (found: 2.3, min: 204, excluded: 3.0).
configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.
configure: error: Cannot find OpenSSL's <evp.h>
-----------------------------------------
.
.

エラーでした。

エラーへの対応その1

エラーメッセージを読むとbison、re2c、opensslに問題がありそうです。

調べてみると下記の記事を見つけました。
Macにanyenv, phpenv, php-builderでPHP7.1.6をインストールしたときのメモ
Mac に phpenv を利用して PHP をインストールする

opensslはインストール済みだったのでbrewで入れた方を認識させるようにします。

$ which openssl
/usr/bin/openssl

$ echo 'export PATH="/usr/local/Cellar/openssl/1.0.2s/bin:$PATH"' >> .zprofile

$ exec $SHELL -l

$ which openssl
/usr/local/Cellar/openssl/1.0.2s/bin/openssl

$ openssl version
OpenSSL 1.0.2s  28 May 2019

その他の必要なものをインストールします。

$ brew install re2c bison libxml2 autoconf automake icu4c libjpeg libpng libmcryp

もう一度phpのインストールを試します。

$ phpenv install 5.6.40

-----------------
|  BUILD ERROR  |
-----------------

Here are the last 10 lines from the log:

-----------------------------------------
configure: WARNING: This bison version is not supported for regeneration of the Zend/PHP parsers (found: 2.3, min: 204, excluded: 3.0).
configure: error: Cannot find libz
-----------------------------------------

bisonの警告消えないし、configure: error: Cannot find libzというエラーが増えました。

エラーへの対応その2

新しく増えたエラーを調べると下記の記事が見つかりました。
Mojave固有の問題のようです。
mojaveアップデート後にconfigure: error: Cannot find libz が解決されない問題の解決法

記事と同じようにまずはxcode-select --installbrew upgradeを試します。

$ xcode-select --install
xcode-select: error: command line tools are already installed, use "Software Update" to install updates

$ brew upgrade

$ phpenv install 5.6.40

-----------------
|  BUILD ERROR  |
-----------------

Here are the last 10 lines from the log:

-----------------------------------------
configure: WARNING: This bison version is not supported for regeneration of the Zend/PHP parsers (found: 2.3, min: 204, excluded: 3.0).
configure: error: Cannot find libz

記事と同様に解決しないので、記載の解決法を実行します。

$ installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
installer: Must be run as root to install this package.

root権限が必要とのことですので

$ sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
Password:
installer: Package name is macOS_SDK_headers_for_macOS_10.14
installer: Installing at base path /
installer: The install was successful.

それではあらためてphpのインストールを試します。

$ phpenv install 5.6.40

[Success]: Built 5.6.40 successfully.

無事インストールできました。

毎度のことですが記録を残して頂いている方々に助けられました。感謝感謝。

この記事を書いた人

Yuki Tomioka

元焼肉店店長からゼロシード株式会社の1人目のwebエンジニアとなる。テクニカルディレクターとして勤務し、WordPressのカスタマイズやアクセス解析や広告運用などに従事。現在は事業会社のフロントエンドエンジニアとして勤務。
タイムチケットで相談も受け付けてます。