以前、phpenvでPHPをインストールしましたが、PHPの新しいバージョンが公開されているので、コマンドの見直しを兼ねつつメモとして残します。
環境
前提
- Homebrewがインストールされていること
ビルドに必要なパッケージは過去の記事を参照してください。
ビルド時のスレッド数を制限する
デフォルトだとCPUのスレッド数(論理コア数)を調べて、全スレッドの数だけ並列してビルドが実行されます。
それだと実行中はPCの動作が重くなってしまうため、 PHP_BUILD_EXTRA_MAKE_ARGUMENTS
でオプションを上書きして並列数を制限します。
例)
export PHP_BUILD_EXTRA_MAKE_ARGUMENTS='-j4'
この記事を書いている最中に、並列数は「物理コア数(CPUコア数)+1」が良いという記事を見かけたので次回は -j5
で実行することにします。
-j4
だと大体半分ぐらいの負荷で4スレッド(論理コア)に負荷がかかっていました。
-j6
だと8割ぐらいの負荷で8スレッド(論理コア)全てに全体的に負荷がかかってました。
PHP 8.1.9のビルドとインストール
$ brew upgrade $ phpenv update $ PKG_CONFIG_PATH="/usr/local/opt/openssl@1.1/lib/pkgconfig" ¥ PHP_BUILD_CONFIGURE_OPTS="--with-bz2=/usr/local/opt/bzip2 --with-iconv=/usr/local/opt/libiconv" ¥ PHP_BUILD_EXTRA_MAKE_ARGUMENTS="-j4" ¥ phpenv install 8.1.9 [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 8.1.9 into /Users/user/.phpenv/versions/8.1.9 [Downloading]: https://www.php.net/distributions/php-8.1.9.tar.bz2 [Preparing]: /var/tmp/php-build/source/8.1.9 [Compiling]: /var/tmp/php-build/source/8.1.9 [xdebug]: Installing version 3.1.5 [Skipping]: Already downloaded http://xdebug.org/files/xdebug-3.1.5.tgz [xdebug]: Compiling xdebug in /var/tmp/php-build/source/xdebug-3.1.5 [xdebug]: Installing xdebug configuration in /Users/user/.phpenv/versions/8.1.9/etc/conf.d/xdebug.ini [xdebug]: Cleaning up. Makefile:243: warning: overriding commands for target `test' Makefile:136: warning: ignoring old commands for target `test' [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.8.1.9.20220811181411.log or rebuild with '--verbose' option [Success]: Built 8.1.9 successfully. 8.1 => 8.1.9
$ php -v PHP 8.1.9 (cli) (built: Aug 11 2022 18:18:59) (NTS) Copyright (c) The PHP Group Zend Engine v4.1.9, Copyright (c) Zend Technologies with Zend OPcache v8.1.9, Copyright (c), by Zend Technologies with Xdebug v3.1.5, Copyright (c) 2002-2022, by Derick Rethans