anyenv、phpenvでphpのインストール方法と、発生したエラー一覧
概要
anyenv と phpenv を使用して php 7.3.29 をインストールしたときにいくつかエラーが発生したので、インストール方法と解決方法をメモします。
インストール方法について
先に anyenv, phpenv を用いたインストール方法についてです。
インストール方法は2つあります。
- パッケージのインストールや環境変数の宣言をコマンドラインで実行する
- パッケージをインストールして PATH を設定ファイル(
defaultconfigure_option
、zshrc
)に通す。
それぞれ見ていきます。
1. パッケージのインストールや環境変数の宣言をコマンドラインで実行する
コマンド
php のビルドに必要なパッケージをすべてインストールする。
brew install \
autoconf \
automake \
bison \
bzip2 \
curl \
gettext \
gmp \
icu4c \
jpeg \
krb5 \
imagemagick \
libedit \
libiconv \
libmcrypt \
libmemcached \
libpng \
libxml2 \
libxslt \
libzip \
libtool \
make \
openssl \
re2c \
readline \
tidy-html5 \
zlib
設定ファイルの環境変数を宣言する
export PHP_BUILD_CONFIGURE_OPTS="\
--disable-fpm \
--disable-phpdbg \
--enable-debug \
--with-bz2=$(brew --prefix bzip2) \
--with-curl=$(brew --prefix curl) \
--with-gettext=$(brew --prefix gettext) \
--with-gmp=$(brew --prefix gmp) \
--with-iconv=$(brew --prefix libiconv) \
--with-icu-dir=$(brew --prefix icu4c) \
--with-jpeg-dir=$(brew --prefix jpeg) \
--with-libedit=$(brew --prefix libedit) \
--with-libxml-dir=$(brew --prefix libxml2) \
--with-libzip=$(brew --prefix libzip)
--with-mcrypt=$(brew --prefix libmcrypt) \
--with-png-dir=$(brew --prefix libpng) \
--with-readline=$(brew --prefix readline) \
--with-tidy=$(brew --prefix tidy-html5) \
--with-xsl=$(brew --prefix libxslt) \
--with-zlib=$(brew --prefix zlib) \
--with-kerberos"
インストールする
phpenv install 7.3.29
以上です。
2. パッケージをインストールして PATH を設定ファイル(defaultconfigure_option と zshrc)に通す。
コマンド
php に必要なパッケージをインストールして、環境変数を設定します。
export PHP_BUILD_CONFIGURE_OPTS="\
--disable-fpm \
--disable-phpdbg \
--enable-debug \
--with-bz2=$(brew --prefix bzip2) \
--with-curl=$(brew --prefix curl) \
--with-gettext=$(brew --prefix gettext) \
--with-gmp=$(brew --prefix gmp) \
--with-iconv=$(brew --prefix libiconv) \
--with-icu-dir=$(brew --prefix icu4c) \
--with-jpeg-dir=$(brew --prefix jpeg) \
--with-libedit=$(brew --prefix libedit) \
--with-libxml-dir=$(brew --prefix libxml2) \
--with-libzip=$(brew --prefix libzip)
--with-mcrypt=$(brew --prefix libmcrypt) \
--with-png-dir=$(brew --prefix libpng) \
--with-readline=$(brew --prefix readline) \
--with-tidy=$(brew --prefix tidy-html5) \
--with-xsl=$(brew --prefix libxslt) \
--with-zlib=$(brew --prefix zlib)" \
--with-kerberos
echo 'export PATH="/usr/local/opt/bison/bin:$PATH"' >> ~/.zshrc
echo 'export PATH="/usr/local/opt/bzip2/bin:$PATH"' >> ~/.zshrc
echo 'export LDFLAGS="-L/usr/local/opt/bzip2/lib"' >> ~/.zshrc
echo 'export CPPFLAGS="-I/usr/local/opt/bzip2/include"' >> ~/.zshrc
echo 'export PATH="/usr/local/opt/libiconv/bin:$PATH"' >> ~/.zshrc
echo 'LDFLAGS="-L/usr/local/opt/libiconv/lib"' >> ~/.zshrc
echo 'CPPFLAGS="-I/usr/local/opt/libiconv/include"' >> ~/.zshrc
echo 'export LDFLAGS="-L/usr/local/opt/libedit/lib"' >> ~/.zshrc
echo 'CPPFLAGS="-I/usr/local/opt/libedit/include"' >> ~/.zshrc
echo 'export PKG_CONFIG_PATH="/usr/local/opt/libedit/lib/pkgconfig"' >> ~/.zshrc
echo 'export PATH="/usr/local/opt/libxml2/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
default_configure_options に追記
phpenv のビルドの設定をする default_configure_options を修正します。
# 以降は記述しないでください。
vim ~/.anyenv/envs/phpenv/plugins/php-build/share/php-build/default_configure_options
--enable-sockets
--enable-exif
--with-zlib
--with-zlib-dir=/usr/local/opt/zlib # 修正箇所
--with-bz2=/usr/local/opt/bzip2 # 修正箇所
--enable-intl
--with-openssl
--enable-soap
--enable-xmlreader
--with-xsl
--enable-ftp
--enable-cgi
--with-curl=/usr
--with-tidy
--with-xmlrpc
--enable-sysvsem
--enable-sysvshm
--enable-shmop
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd
--with-pdo-sqlite
--enable-pcntl
--with-readline
--enable-mbstring
--disable-debug
--enable-fpm
--enable-bcmath
--enable-phpdbg
--with-iconv=/usr/local/opt/libiconv # 修正箇所
--with-libxml-dir=/usr/local/opt/libxml2 # 修正箇所
インストール
phpenv install 7.3.29
エラー一覧
phpenv をインストーするときに、ビルドエラーで順番に解決していったので、それぞれビルドエラーがどのパッケージに対応していたのかをみていきます。
エラー1
ビルドエラー1
-----------------
| BUILD ERROR |
-----------------
Here are the last 10 lines from the log:
-----------------------------------------
configure: WARNING: This bison version is not supported for regeneration of the Zend/PHP parsers (found: 2.3, min: 204, excluded: ).
configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.
configure: error: Cannot find zlib
-----------------------------------------
解決方法1
configure: WARNING: This bison version is not supported for regeneration of the Zend/PHP parsers (found: 2.3, min: 204, excluded: ).
bison のバージョンを確認します。
> bison --version
bison (GNU Bison) 3.8.1
Written by Robert Corbett and Richard Stallman.
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
3.8.1 でした。なかったりバージョンがふるかったりしたら、brew install bison
でインストールします。
bison のパスを通します。
echo 'export PATH="/usr/local/opt/bison/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.
re2c をインストールします。
brew install re2
configure: error: Cannot find zlib
zlib を確認します。
出力に zlib が表示されたらインストールされています。
ls /usr/local/opt | grep zlib
zlib # 出力
ですので、phpenv の build ファイルに zlib の場所を指定させます。
vim ~/.anyenv/envs/phpenv/plugins/php-build/share/php-build/default_configure_options
--enable-sockets
--enable-exif
--with-zlib
--with-zlib-dir=/usr/local/opt/zlib # ここを修正する
--with-bz2
--enable-intl
--with-openssl
--enable-soap
--enable-xmlreader
--with-xsl
--enable-ftp
--enable-cgi
--with-curl=/usr
--with-tidy
--with-xmlrpc
--enable-sysvsem
--enable-sysvshm
--enable-shmop
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd
--with-pdo-sqlite
--enable-pcntl
--with-readline
--enable-mbstring
--disable-debug
--enable-fpm
--enable-bcmath
--enable-phpdbg
エラー2
ビルドエラー2
今度は BZip2 のエラーです。
-----------------
| BUILD ERROR |
-----------------
Here are the last 10 lines from the log:
-----------------------------------------
configure: error: Please reinstall the BZip2 distribution
-----------------------------------------
解決策 2
bzip2 をインストールして、パスを通します。
brew install bzip2
echo 'export PATH="/usr/local/opt/bzip2/bin:$PATH"' >> ~/.zshrc
echo 'export LDFLAGS="-L/usr/local/opt/bzip2/lib"' >> ~/.zshrc
echo 'export CPPFLAGS="-I/usr/local/opt/bzip2/include"' >> ~/.zshrc
source ~/.zshrc
また、phpenv の build ファイルに bzip2 の場所を記述します。
vim ~/.anyenv/envs/phpenv/plugins/php-build/share/php-build/default_configure_options
--enable-sockets
--enable-exif
--with-zlib
--with-zlib-dir=/usr/local/opt/zlib
--with-bz2=/usr/local/opt/bzip2 # ここを修正する
--enable-intl
--with-openssl
--enable-soap
--enable-xmlreader
--with-xsl
--enable-ftp
--enable-cgi
--with-curl=/usr
--with-tidy
--with-xmlrpc
--enable-sysvsem
--enable-sysvshm
--enable-shmop
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd
--with-pdo-sqlite
--enable-pcntl
--with-readline
--enable-mbstring
--disable-debug
--enable-fpm
--enable-bcmath
--enable-phpdbg
エラー3
ビルドエラー
iconv のエラーです。
-----------------
| BUILD ERROR |
-----------------
Here are the last 10 lines from the log:
-----------------------------------------
configure: error: Please specify the install prefix of iconv with --with-iconv=<DIR>
-----------------------------------------
解決策3
libiconv をインストールします。
brew install libiconv
echo 'export PATH="/usr/local/opt/libiconv/bin:$PATH"' >> ~/.zshrc
echo 'LDFLAGS="-L/usr/local/opt/libiconv/lib"' >> ~/.zshrc
echo 'CPPFLAGS="-I/usr/local/opt/libiconv/include"' >> ~/.zshrc
source ~/.zshrc
また、phpenv の build ファイルに libiconv の場所を記述します。
vim ~/.anyenv/envs/phpenv/plugins/php-build/share/php-build/default_configure_options
--enable-sockets
--enable-exif
--with-zlib
--with-zlib-dir=/usr/local/opt/zlib
--with-bz2=/usr/local/opt/bzip2
--enable-intl
--with-openssl
--enable-soap
--enable-xmlreader
--with-xsl
--enable-ftp
--enable-cgi
--with-curl=/usr
--with-tidy
--with-xmlrpc
--enable-sysvsem
--enable-sysvshm
--enable-shmop
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd
--with-pdo-sqlite
--enable-pcntl
--with-readline
--enable-mbstring
--disable-debug
--enable-fpm
--enable-bcmath
--enable-phpdbg
--with-iconv=/usr/local/opt/libiconv # この行を追記
エラー4
ビルドエラー4
libedit のエラーです。
> phpenv install 7.3.29
-----------------
| BUILD ERROR |
-----------------
Here are the last 10 lines from the log:
-----------------------------------------
configure: error: Please reinstall libedit - I cannot find readline.h
-----------------------------------------
解決策4
libedit をインストールします。
brew install libedit
echo 'export LDFLAGS="-L/usr/local/opt/libedit/lib"' >> ~/.zshrc
echo 'CPPFLAGS="-I/usr/local/opt/libedit/include"' >> ~/.zshrc
echo 'export PKG_CONFIG_PATH="/usr/local/opt/libedit/lib/pkgconfig"' >> ~/.zshrc
エラー5
ビルドエラー5
libtidy のエラーです。
> phpenv install 7.3.29
-----------------
| BUILD ERROR |
-----------------
Here are the last 10 lines from the log:
-----------------------------------------
configure: error: Cannot find libtidy
-----------------------------------------
解決策5
解決するには、tidy-html5 が必要です。
brew install tidy-html5
エラー6
ビルドエラー6
libzip のエラーです。
-----------------
| BUILD ERROR |
-----------------
Here are the last 10 lines from the log:
-----------------------------------------
configure: error: Please reinstall the libzip distribution
-----------------------------------------
解決策6
libzip をインストールします。
brew install libzip
エラー7
ビルドエラー7
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ext/opcache/.libs/opcache.a(shared_alloc_shm.o) has no symbols
解決策7
わかりにくいですが、libxml2 をインストールします。
brew install libxml2
echo 'export PATH="/usr/local/opt/libxml2/bin:$PATH"' >> ~/.zshrc
--enable-sockets
--enable-exif
--with-zlib
--with-zlib-dir=/usr/local/opt/zlib
--with-bz2=/usr/local/opt/bzip2
--enable-intl
--with-openssl
--enable-soap
--enable-xmlreader
--with-xsl
--enable-ftp
--enable-cgi
--with-curl=/usr
--with-tidy
--with-xmlrpc
--enable-sysvsem
--enable-sysvshm
--enable-shmop
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd
--with-pdo-sqlite
--enable-pcntl
--with-readline
--enable-mbstring
--disable-debug
--enable-fpm
--enable-bcmath
--enable-phpdbg
--with-iconv=/usr/local/opt/libiconv
--with-libxml-dir=/usr/local/opt/libxml2 # この行を追記
参考
Discussion