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のキャッシュが 残っているかもしれない。
あとビルドはかなり時間がかかる。