何番煎じかわからないけどmacでphpenvをbuildできるようにする

phpenvのbuild errorが起きすぎる

  • macOSをCatalinaにあげたり、新規macを購入したら大抵エラーが起きたりする
  • 悲しいことに複数のprojectを抱えてたり、version固定(指定)している場合には、phpenvが必須になるので対応するしかない
    • dockerでどうこうの場合は、この限りではないと思います

前提

  • brew が入っている環境
  • anyenvでphpenvがinstall済みの環境

願い・気持ち

  • 極力zshrc等を汚したくない

結論:以下を行えば問題なくbuildができる

  • brew で必要になるものをinstallする
  • anyenv以下にあるphpenvのbuild_optionを修正する
  • phpenv install時にversionによってoptionをつけてコマンドを実行する

  • brew install

$ brew install zlib curl bzip libiconv libedit tidy-html5 openssl@1.1 icu4c krb5

~足りないものは適宜追加してください~

  • build option
$ vim ~/.anyenv/envs/phpenv/plugins/php-build/share/php-build/default_configure_options
--enable-sockets
--enable-exif
--with-zlib
--enable-intl
--with-kerberos
--with-openssl
--enable-soap
--enable-xmlreader
--with-xsl
--enable-ftp
--enable-cgi
--with-curl=/usr
--with-tidy
--with-xmlrpc
--enable-sysvsem
--enable-sysvshm
--enable-shmop
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd
--with-pdo-sqlite
--enable-pcntl
--with-readline
--enable-mbstring
--disable-debug
--enable-fpm
--enable-bcmath
--enable-phpdbg

# 以下を追加
--with-zlib-dir=/usr/local/opt/zlib
--with-bz2=/usr/local/opt/bzip2
--with-iconv=/usr/local/opt/libiconv
--with-libedit=/usr/local/opt/libedit
--with-curl=/usr/local/opt/curl
--with-tidy=/usr/local/opt/tidy-html5
  • php / 7.2.xのinstall
$ PHP_BUILD_CONFIGURE_OPTS="--with-libedit=$(brew --prefix libedit)" phpenv install 7.2.32

7.4.xのinstall

  • zshrcなどに以下を追記
export PKG_CONFIG_PATH="$(brew --prefix krb5)/lib/pkgconfig:$PKG_CONFIG_PATH"
export PKG_CONFIG_PATH="$(brew --prefix openssl@1.1)/lib/pkgconfig:$PKG_CONFIG_PATH"
export PKG_CONFIG_PATH="$(brew --prefix icu4c)/lib/pkgconfig:$PKG_CONFIG_PATH"
$ phpenv install 7.4.x

終わりに

  • qiitaや個人ブログで色々とありますが、みんな苦労しているんだろうなって印象です。
  • 個人的にdockerではなくmacにてphpenvでversion切り替えを行う理由は、mac側からphpコマンドを使いたい場合があるためです。なにかと都合がいいです。