eureka

anyenvでPHPをインストールする

0

iMacを購入してから約2年、Laravelアプリのフロント開発に関わることになったのですが、そもそもPHPを入れていなかったことが判明。

PHPをそのまま入れてもいいのですが、anyenvも入っていることだし、PHPバージョンが固定されたプロジェクトに参画すると大変だし、ということでphpenvを使ってPHPを入れることにしました。

マシンが変わったときのために覚書しておきます。

環境

  • macOS Ventura 13.3.1
  • Apple M1
  • zsh 5.9 (x86_64-apple-darwin22.0)
  • anyenv 1.1.4

phpenvのインストール

phpenvをインストールします。

$ anyenv install phpenv

関連パッケージのインストール

他のサイトでもよく紹介されている内容ですが、libxml2 だけ省いているので注意です。

$ brew install curl autoconf bzip2 icu4c krb5 libedit libiconv libjpeg libpng libzip oniguruma openssl@1.1 pkg-config tidy-html5 gcc re2c bison openssl zlib

libxml2のインストール

brew installは最新のものをインストールしますが libxml2 を最新版で入れると後の工程でエラーになるので、バージョンを指定して個別にインストールします。

wget http://xmlsoft.org/sources/libxml2-2.9.4.tar.gz
tar xzvf libxml2-2.9.4.tar.gz
cd libxml2-2.9.4
LDFLAGS="-L$(brew --prefix xz)/lib" CPPFLAGS="-I$(brew --prefix xz)/include" ./configure --prefix=/opt/libxml2-2.9.4 //任意のフォルダパス
make
sudo make install

wgetコマンドが使えなかったらbrew install wget を先に実行する。

ちなみにlibxml2を最新版で進めるとPHPのインストールでこういう感じのエラーが出ます。

/var/tmp/php-build/source/7.3.33/ext/dom/document.c:1659:4: error: use of undeclared identifier 'xmlSaveNoEmptyTags'
                        xmlSaveNoEmptyTags = 1;
                        ^
/var/tmp/php-build/source/7.3.33/ext/dom/document.c:1664:4: error: use of undeclared identifier 'xmlSaveNoEmptyTags'
                        xmlSaveNoEmptyTags = saveempty;
                        ^
9 errors generated.
make: *** [ext/dom/document.lo] Error 1
make: *** Waiting for unfinished jobs....

パスを通す

~/.zshrcに以下を追記する。

## phpenv
export PATH="/opt/homebrew/opt/bison/bin:$PATH"
export PATH="/opt/homebrew/opt/libxml2/bin:$PATH"
export PATH="/opt/homebrew/opt/bzip2/bin:$PATH"
export PATH="/opt/homebrew/opt/curl/bin:$PATH"
export PATH="/opt/homebrew/opt/libiconv/bin:$PATH"
export PATH="/opt/homebrew/opt/krb5/bin:$PATH"
export PATH="/opt/homebrew/opt/openssl@1.1/bin:$PATH"
export PATH="/opt/homebrew/opt/icu4c/bin:$PATH"
export PATH="/opt/homebrew/opt/tidy-html5/lib:$PATH"
export PKG_CONFIG_PATH="/opt/homebrew/opt/krb5/lib/pkgconfig:$PKG_CONFIG_PATH"
export PKG_CONFIG_PATH="/opt/homebrew/opt/icu4c/lib/pkgconfig:$PKG_CONFIG_PATH"
export PKG_CONFIG_PATH="/opt/homebrew/opt/libedit/lib/pkgconfig:$PKG_CONFIG_PATH"
export PKG_CONFIG_PATH="/opt/homebrew/opt/libjpeg/lib/pkgconfig:$PKG_CONFIG_PATH"
export PKG_CONFIG_PATH="/opt/homebrew/opt/libpng/lib/pkgconfig:$PKG_CONFIG_PATH"
export PKG_CONFIG_PATH="/opt/homebrew/opt/libxml2/lib/pkgconfig:$PKG_CONFIG_PATH"
export PKG_CONFIG_PATH="/opt/homebrew/opt/libzip/lib/pkgconfig:$PKG_CONFIG_PATH"
export PKG_CONFIG_PATH="/opt/homebrew/opt/oniguruma/lib/pkgconfig:$PKG_CONFIG_PATH"
export PKG_CONFIG_PATH="/opt/homebrew/opt/openssl@1.1/lib/pkgconfig:$PKG_CONFIG_PATH"
export PKG_CONFIG_PATH="/opt/homebrew/opt/tidy-html5/lib/pkgconfig:$PKG_CONFIG_PATH"
export PHP_RPATHS="/opt/homebrew/opt/zlib/lib /opt/homebrew/opt/bzip2/lib /opt/homebrew/opt/curl/lib /opt/homebrew/opt/libiconv/lib /opt/homebrew/opt/libedit/lib"
export PHP_BUILD_CONFIGURE_OPTS="--with-bz2=$(brew --prefix bzip2) --with-iconv=$(brew --prefix libiconv) --with-tidy=$(brew --prefix tidy-html5) --with-external-pcre=$(brew --prefix pcre2) --with-zip --enable-intl --with-pear"

入力したらシェルを読み込む。

$ source ~/.zshrc

ここまでできればあとはPHPをインストールするのみです。

PHPをインストール

お好きなバージョンでインストールしてください。

$ phpenv install 8.0.30

# グローバルバージョンの切り替え
$ phpenv global 8.0.30

# プロジェクト単位でのバージョンの切り替え
$ phpenv local 8.0.30

# 更新
$ phpenv rehash

以上でインストール完了です!

0