MacbookProにphpenv経由でPHP8.3.13をインストールする方法

こんなに時間がかかるとは思わなかった。

備忘録がてら、Macにphpenvを通してphp8.3.13をインストールする方法をまとめていく。

環境について

  • MacOS 15.7.5
  • phpenv 1.0.0-46-gadc99a7
  • php 8.3.13

インストール方法

macでphpenv経由でインストールするためには事前準備が重要になる。 まずはphpenvの設定からやろう。

git clone https://github.com/phpenv/phpenv.git ~/.phpenv

echo 'export PATH="$HOME/.phpenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(phpenv init -)"' >> ~/.zshrc
. ~/.zshrc

# php buildを入れる
git clone https://github.com/php-build/php-build "$(phpenv root)/plugins/php-build"

# phpのversionにあったcomposerを自動で入れてくれる
git clone https://github.com/ngyuki/phpenv-composer.git "$(phpenv root)/plugins/phpenv-composer"

ここまでは大丈夫。

次にphpのビルドに必要なパッケージをbrewから入れていく

brew install gcc make grep \
  bzip2 openssl libxml2 sqlite curl libpng libjpeg \
  oniguruma tidy-html5 libxslt libzip readline autoconf pkg-config

gccやmakeはGNUのものを使う。

そして、gccがどのバージョンが入ったかを以下のコマンドでチェックする

mac@macnoMacBook-Pro ~ % ls $(brew --prefix gcc)/bin/gcc-*
/usr/local/opt/gcc/bin/gcc-15       /usr/local/opt/gcc/bin/gcc-nm-15
/usr/local/opt/gcc/bin/gcc-ar-15    /usr/local/opt/gcc/bin/gcc-ranlib-15

上記の例ではgcc-15であることがわかる。

そして、やっとphpをインストールをする。 そのためには、以下のクソデカコマンドラインを使う。

env \
CC=$(brew --prefix gcc)/bin/gcc-15 \
CXX=$(brew --prefix gcc)/bin/g++-15 \
CPP="$(brew --prefix gcc)/bin/gcc-15 -E" \
CXXFLAGS="-std=c++17" \
PHP_BUILD_XDEBUG_ENABLE=off \
PHP_BUILD_EXTRA_MAKE_ARGUMENTS="-j4" \
PKG_CONFIG_PATH="$(brew --prefix libjpeg)/lib/pkgconfig:$(brew --prefix libiconv)/lib/pkgconfig:$(brew --prefix openssl)/lib/pkgconfig:$(brew --prefix zlib)/lib/pkgconfig:$(brew --prefix bzip2)/lib/pkgconfig" \
LDFLAGS="-L$(brew --prefix libjpeg)/lib -L$(brew --prefix libiconv)/lib -L$(brew --prefix bzip2)/lib -L$(brew --prefix zlib)/lib -L$(brew --prefix openssl)/lib" \
CPPFLAGS="-I$(brew --prefix libjpeg)/include -I$(brew --prefix libiconv)/include -I$(brew --prefix bzip2)/include -I$(brew --prefix zlib)/include -I$(brew --prefix openssl)/include" \
PHP_BUILD_CONFIGURE_OPTS="--with-jpeg=$(brew --prefix libjpeg) --with-bz2=$(brew --prefix bzip2) --with-zlib-dir=$(brew --prefix zlib) --with-openssl=$(brew --prefix openssl) --with-iconv=$(brew --prefix libiconv)" \
phpenv install 8.3.13

mac環境だと、homebrewで入れたパッケージをphpenv(というよりphpのconfigureとかMakefileとか)が 見つけることができないで、 Not Foundみたいなエラーが出てくる。

そのため、こちらからわざわざツールやライブラリのPATHを通してあげる必要がある。

また、私の環境ではC++17でないとビルドできなかったので、CXXFLAGSにて設定してあげた。

以下のコマンドに関してはお好みで調整すると良い。

PHP_BUILD_XDEBUG_ENABLE=off \
PHP_BUILD_EXTRA_MAKE_ARGUMENTS="-j4" \

もし、修正したのに同じようなエラーが出る場合は、configureのキャッシュが 残っているかもしれない。

あとビルドはかなり時間がかかる。