mac + phpenv で php 8.0.18 を使えるようにする

phpenv で動いているmy macにphpを追加する際、いつも必要となるライブラリが違うので苦労しています^^

よく見るこのエラー(悲

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

Here are the last 10 lines from the log:

-----------------------------------------
configure: error: Package requirements (openssl >= 1.0.1) were not met:

No package 'openssl' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables OPENSSL_CFLAGS
and OPENSSL_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
-----------------------------------------

8.0.18のビルドに使ったコマンドをメモとして残しておきます。

ライブラリのインストール

brew install autoconf openssl@1.1 pkg-config bzip2 icu4c krb5 libedit libiconv libjpeg libpng libxml2 libzip tidy-html5 oniguruma

これでだいたい抜けもれなく入りました。いろんなサイトの叡智が集約されてます(笑)

phpのビルド

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/openssl@1.1/lib/pkgconfig:/usr/local/opt/tidy-html5/lib/pkgconfig" PHP_BUILD_CONFIGURE_OPTS="--with-openssl=$(brew --prefix openssl) --with-libxml-dir=$(brew --prefix libxml2) --with-bz2=/usr/local/opt/bzip2 --with-iconv=/usr/local/opt/libiconv --with-pear" PHP_BUILD_EXTRA_MAKE_ARGUMENTS=-j4 phpenv install 8.0.18

超長い(笑)

peclも合わせてインストールしたいので、–with-pear オプションも追加してあります。

なぜかgrepのオプションで……

grep: invalid option -- 'p'

今回、こんなエラーメッセージに初めて遭遇。

コンパイラがgrepの正規表現オプションを使っているみたいなんですが、macosのgrepにはpオプションが存在せず……

brew install grep

でgnu版をインストールすると、

$ which ggrep
/usr/local/bin/ggrep

ggrepとしてインストールされます。

export PATH="/usr/local/opt/grep/libexec/gnubin:$PATH"

bash_profile 等で上記パスを通してあげれば、既存のgrepがggrepに置き換わります。

もろもろインストール完了

[Info]: The Log File is not empty, but the Build did not fail. Maybe just warnings got logged. You can review the log in /tmp/php-build.8.0.18.20220422190815.log or rebuild with '--verbose' option
[Success]: Built 8.0.18 successfully.

ひゃっほーい。

phpenvで切り替え

phpenv global 8.0.18
~ $ php -v
PHP 8.0.18 (cli) (built: Apr 22 2022 19:14:53) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.18, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.18, Copyright (c), by Zend Technologies
    with Xdebug v3.1.3, Copyright (c) 2002-2022, by Derick Rethans

無事切り替わりました。

peclでmailparseをインストール

pecl install mailparse
install ok: channel://pecl.php.net/mailparse-3.1.3
configuration option "php_ini" is not set to php.ini location
You should add "extension=mailparse.so" to php.ini

インストールできたので、メッセージにあるように php.iniに

extension=mailparse.so

を追加すればOKです。