Tech Blog

phpenvでPHP7.4、7.3をインストールする

2020-04-01

macOSのローカルにPHPのバージョンを複数利用したい場合は、phpenvが便利です。 がしかし、ハマりどころが多いのが難点です。

一旦、うまくいったので、備忘録として残しておきます。

依存関係のある必要なパッケージをインストール

依存関係のあるパッケージを予めインストールしておく必要があります。 以下は例です。

brew install autoconf bzip2 icu4c krb5 libedit libiconv libjpeg libpng libxml2 libzip oniguruma [email protected] pkg-config tidy-html5

私の環境は以下の状態となりました。

brew list
anyenv		bzip2		ghq		krb5		libpq		nghttp2		pkg-config	tidy-html5
apr		c-ares		git		libedit		libsodium	node		postgresql	tree
apr-util	composer	glib		libev		libssh2		oniguruma	protobuf	unixodbc
argon2		curl		gmp		libevent	libtiff		openldap	python		webp
aspell		curl-openssl	hub		libffi		libtool		[email protected]	re2c		xz
autoconf	freetds		icu4c		libiconv	libxml2		pcre		readline	yarn
bison		freetype	jansson		libidn		libzip		pcre2		redis		zlib
[email protected]	gdbm		jemalloc	libmetalink	mhash		peco		rtmpdump
brotli		gettext		jpeg		libpng		mysql		php		sqlite

PHP7.4のインストール

PHP7.4ではPKG_CONFIG_PATHを設定する必要があります。

上記の環境で以下のコマンドを実行すると、PHPの7.4.1が入ります。

PKG_CONFIG_PATH="/usr/local/opt/krb5/lib/pkgconfig:/usr/local/opt/icu4c/lib/pkgconfig:/usr/local/opt/libedit/lib/pkgconfig:/usr/local/opt/libjpeg/lib/pkgconfig:/usr/local/opt/libpng/lib/pkgconfig:/usr/local/opt/libxml2/lib/pkgconfig:/usr/local/opt/libzip/lib/pkgconfig:/usr/local/opt/oniguruma/lib/pkgconfig:/usr/local/opt/[email protected]/lib/pkgconfig:/usr/local/opt/tidy-html5/lib/pkgconfig" \
PHP_BUILD_CONFIGURE_OPTS="--with-bz2=/usr/local/opt/bzip2 --with-iconv=/usr/local/opt/libiconv" \
phpenv install 7.4.1

PHP7.3のインストール

phpenv install 7.3.13を実行するとエラーが出ました。

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

と言われました。 bisonのバージョンがmacOSにインストールされているbisonを参照してしまっているため、PATHを.zshrcで設定し直す必要があります。

echo 'export PATH="/usr/local/opt/bison/bin:$PATH"' >> ~/.zshrc

その後、再度phpenv install 7.3.13を実行すると以下のエラーとなります。 configure: error: Cannot find zlib

このパターンのエラーは、zlibのパスが設定されていないといったもののため、 インストールコマンドにzlibのパスをCONFIGURE_OPTSで指定してあげると問題は解決されます。

CONFIGURE_OPTS="--with-zlib-dir=$(brew --prefix zlib) \
--with-bz2=$(brew --prefix bzip2) \
--with-curl=$(brew --prefix curl) \
--with-iconv=$(brew --prefix libiconv) \
--with-libedit=$(brew --prefix libedit) \
--with-readline=$(brew --prefix readline) \
--with-tidy=$(brew --prefix tidy-html5)" \
phpenv install 7.3.13

上記でインストールできます。

Redis拡張をインストール

安定版のredis extensionを手動インストールします。

pecl install redis

amqpをインストール

brew install rabbitmq-c
pecl install amqp
# rabbitmq-cのpathを聞かれるので下記のようにする
Set the path to librabbitmq install prefix [autodetect] : /usr/local/Cellar/rabbitmq-c/0.10.0

参考