techblog.roxx.co.jp の続きです。
前回はphpenv, php-buildを諦めてしまいましたがいろいろ設定を調査して再挑戦です。
default_configure_options を調整する
php-buildには default_configure_options
というファイルがあり、こちらに configure
で利用するオプションを記載しています。
$PHPENV_ROOT/plugins/php-build/share/php-build/default_configure_options
をお好みのエディターで編集し、前回エラーが出ていたzlib, bzip2, iconv のオプションを調整します。
default_configure_optionsはこのようになりました。 gist.github.com
それぞれビルド用にHomebrewでインストールしておきましょう。
brew install bzip2 libiconv zlib
これで再度php7.2.22のインストールに挑戦してみましたが libedit
を再インストールしろというエラーが起きてしまいました。くやしい。
$ phpenv install 7.2.22 [Info]: Loaded extension plugin [Info]: Loaded apc Plugin. [Info]: Loaded composer Plugin. [Info]: Loaded github Plugin. [Info]: Loaded uprofiler Plugin. [Info]: Loaded xdebug Plugin. [Info]: Loaded xhprof Plugin. [Info]: Loaded zendopcache Plugin. [Info]: php.ini-production gets used as php.ini [Info]: Building 7.2.22 into /Users/jiska/.anyenv/envs/phpenv/versions/7.2.22 [Downloading]: https://secure.php.net/distributions/php-7.2.22.tar.bz2 (中略) ----------------- | BUILD ERROR | ----------------- Here are the last 10 lines from the log: ----------------------------------------- configure: error: Please reinstall libedit - I cannot find readline.h -----------------------------------------
とりあえずlibeditをインストールしてdefault_configure_options に --libedit を指定して再実行しましたが状況が変わりませんでした。
brew install libedit
$ phpenv install 7.2.22 (中略) ----------------- | BUILD ERROR | ----------------- Here are the last 10 lines from the log: ----------------------------------------- configure: error: Please reinstall libedit - I cannot find readline.h -----------------------------------------
くやしい。もうちょっと原因調べないとダメです。
PHP_BUILD_CONFIGURE_OPTS を指定する
php-build のコードを読んでいて気づいたのですが、macOSの場合は --libedit
を上書きしてしまっているようです。
if is_osx; then configure_option -D "--with-gettext" configure_option -D "--with-readline" configure_option "--with-libedit" configure_option -R "--with-png-dir" "/usr/X11" fi
そして、envに PHP_BUILD_CONFIGURE_OPTS
を指定すればconfigureにオプションとして反映してくれるようです。
[ -z "$PHP_BUILD_CONFIGURE_OPTS" ] && PHP_BUILD_CONFIGURE_OPTS=""
CONFIGURE_OPTIONS="$CONFIGURE_OPTIONS $PHP_BUILD_CONFIGURE_OPTS $CONFIGURE_OPTS"
envにlibeditの設定を指定して再度実行してみたところ、ようやくbuildすることができました!ビルドを試したのは7.2.22, 7.2.23, 7.3.12 です。
# 7.2.22 $ PHP_BUILD_CONFIGURE_OPTS="--with-libedit=/usr/local/opt/libedit" phpenv install 7.2.22 (中略) Generating phar.php Generating phar.phar PEAR package PHP_Archive not installed: generated phar will require PHP's phar extension be enabled. directorytreeiterator.inc clicommand.inc directorygraphiterator.inc invertedregexiterator.inc pharcommand.inc phar.inc Build complete. Don't forget to run 'make test'. (中略) [xdebug]: Installing xdebug configuration in /Users/jiska/.anyenv/envs/phpenv/versions/7.2.22/etc/conf.d/xdebug.ini [xdebug]: Cleaning up. [Info]: Enabling Opcache... [Info]: Done [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.7.2.22.20191127024529.log or rebuild with '--verbose' option [Success]: Built 7.2.22 successfully. # 7.3.12 も大丈夫だった PHP_BUILD_CONFIGURE_OPTS="--with-libedit=/usr/local/opt/libedit" phpenv install 7.3.12
まとめ
- default_configure_optionsを調整しよう
- ビルドに必要なものをインストールしておこう
brew install bzip2 libedit libiconv zlib
- PHP_BUILD_CONFIGURE_OPTSに
--with-libedit
を追加してからphpenv install
しようPHP_BUILD_CONFIGURE_OPTS="--with-libedit=/usr/local/opt/libedit" phpenv install 7.3.12
最後に
株式会社ROXXでは一緒に agent bank と back check を作っていくメンバーを随時募集しています。 この記事を読んでROXXに興味を持ってくれた方はぜひご応募ください。 www.wantedly.com