見出し画像

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を見ると下記のパッケージが必要のようですが、

autoconf, autoconf@2.13, bzip2, icu4c, libedit, libiconv, libjpeg,
libmcrypt, libxml2, libzip, oniguruma, openssl, pkg-config,
python, re2c, tidy-html5, zlib

https://github.com/php-build/php-build/blob/ee951b9c879ccd25910b94c8071a6d6779a8114b/install-dependencies.sh#L121-L144

手元の環境だと下記のパッケージをインストールすればPHPのインストール(ビルド)ができました。
※install-dependencies.shには書かれていませんがlibpngも必要でした。

brew install autoconf bzip2 icu4c libiconv libjpeg libzip \
    oniguruma openssl@3 pkg-config tidy-html5 libpng

phpenvやphp-buildをインストールする

phpenvphp-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