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では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
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 extensionを手動インストールします。
pecl install redis
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