phpenvを使ってPHP 8.3.0をインストールする
PHPを使ったWebアプリケーションの開発をしています。
プロジェクトごとに異なるPHPバージョンが必要になるため、phpenvを使って環境を構築しています。
アプリケーションを動かす環境はDockerコンテナなどを利用しますが、ホストOS上でコードフォーマッターなどを使いたいため、PHPをインストールします。
環境
macOS Sonoma 14.2.1 (Intel)
zsh
Homebrew
依存パッケージをインストールする
PHPをインストールするのに必要なパッケージをHomebrewを使ってインストールします。
Homebrewのインストール方法は公式サイトを確認してください。
php-buildのinstall-dependencies.shを見ると下記のパッケージが必要のようですが、
手元の環境だと下記のパッケージをインストールすればPHPのインストール(ビルド)ができました。
※install-dependencies.shには書かれていませんがlibpngも必要でした。
brew install autoconf bzip2 icu4c libiconv libjpeg libzip \
oniguruma openssl@3 pkg-config tidy-html5 libpng
phpenvやphp-buildをインストールする
git clone https://github.com/phpenv/phpenv.git ~/.phpenv
echo 'export PATH="$HOME/.phpenv/bin:$PATH"' >> ~/.zshenv
echo 'eval "$(phpenv init -)"' >> ~/.zshrc
exec $SHELL -l
git clone https://github.com/php-build/php-build $(phpenv root)/plugins/php-build
PHP 8.3.0をインストールする
2023-12-28時点ではPHP 8.3.1がリリースされています。
ただ、php-buildで8.3.1の定義ファイルが未マージのため、8.3.0をインストールします。
cd ~/.phpenv && git pull
cd ~/.phpenv/plugins/php-build && git pull
cd ~/
export PHP_BUILD_XDEBUG_ENABLE=off
export PHP_BUILD_EXTRA_MAKE_ARGUMENTS="-j5"
export PKG_CONFIG_PATH="/usr/local/opt/openssl@3/lib/pkgconfig:/usr/local/opt/jpeg/lib/pkgconfig:/usr/local/opt/icu4c/lib/pkgconfig"
export PHP_BUILD_CONFIGURE_OPTS="--with-bz2=/usr/local/opt/bzip2 --with-iconv=/usr/local/opt/libiconv"
phpenv install 8.3.0
phpenv rehash
`PHP_BUILD_EXTRA_MAKE_ARGUMENTS="-j5"` を指定してPHPのコンパイル時の並列数を制限しています。
未指定だと論理コアをすべて使ってコンパイルしようとするため、コンパイル中はマウスカーソルやキー入力なども遅延してしまいます。
"物理コア数+1"がちょうど良い値です。
環境にもよりますがコンパイルには10分〜15分ほどかかります。
$ phpenv shell 8.3.0
8.3.0
$ php -v
PHP 8.3.0 (cli) (built: Dec 28 2023 12:18:57) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.0, Copyright (c) Zend Technologies
with Zend OPcache v8.3.0, Copyright (c), by Zend Technologies
コンパイルが終わるとPHP 8.3.0が使えるようになりました。
PHPのロゴ画像は下記のサイトで公開されている画像を使用しました。
https://www.php.net/download-logos.php
ロゴ画像の著者: Colin Viebrock
ロゴ画像のライセンス: Creative Commons Attribution-Share Alike 4.0 International