🐘
[Mac] phpenv(php-build)でPHP 8.0.0をインストールする方法
はじめに
phpenvによるPHPのインストールは、インストールしようとするバージョンによって細かい対応が必要な場合があります。
以下のページに本ブログ内の関連記事をまとめていますので、必要に応じてご参照ください🙏
implicit declaration of function 'gdPngGetVersionString'
というエラーになった
phpenv(php-build)でPHP 8.0.0をインストールしようとしたら 先日めでたくPHP 8.0.0がリリースされ、php-buildからも利用可能になりました 🎉
早速インストールしようとしてみたところ、
[Info]: Loaded extension plugin
[Info]: Loaded apc Plugin.
[Info]: Loaded composer Plugin.
[Info]: Loaded github Plugin.
[Info]: Loaded uprofiler Plugin.
[Info]: Loaded xdebug Plugin.
[Info]: Loaded xhprof Plugin.
[Info]: Loaded zendopcache Plugin.
[Info]: php.ini-production gets used as php.ini
[Info]: Building 8.0.0 into /Users/ttskch/.phpenv/versions/8.0.0
[Skipping]: Already downloaded and extracted https://secure.php.net/distributions/php-8.0.0.tar.bz2
[Preparing]: /var/tmp/php-build/source/8.0.0
[Compiling]: /var/tmp/php-build/source/8.0.0
-----------------
| BUILD ERROR |
-----------------
Here are the last 10 lines from the log:
-----------------------------------------
/var/tmp/php-build/source/8.0.0/ext/gd/gd.c:521:48: error: implicit declaration of function 'gdPngGetVersionString' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
php_info_print_table_row(2, "libPNG Version", gdPngGetVersionString());
^
/var/tmp/php-build/source/8.0.0/ext/gd/gd.c:521:48: note: did you mean 'gdVersionString'?
/usr/local/include/gd.h:1630:27: note: 'gdVersionString' declared here
BGD_DECLARE(const char *) gdVersionString(void);
^
2 errors generated.
make: *** [ext/gd/gd.lo] Error 1
make: *** Waiting for unfinished jobs....
-----------------------------------------
The full Log is available at '/tmp/php-build.8.0.0.2020xxxxxxxxxx.log'.
[Warn]: Aborting build.
というエラーに。
今回はこれを解消してインストールするために必要なことを説明します✋
結論:Homebrewでインストールしたgdを使うようにすればインストールできる
ちょっと詳細まで理解していませんが、コンパイルオプションに以下を追加して、Homebrewでインストールしたgdを使うようにすればインストールできました。
--with-external-gd=/usr/local/opt/gd
ちなみに僕の環境ではgdのバージョンは2.3.0です。
$ brew info gd
gd: stable 2.3.0 (bottled), HEAD
実際のインストールコマンド
今回僕が実際に実行したインストールコマンドは以下です。
export PATH=/usr/local/opt/bison/bin:$PATH
export PKG_CONFIG_PATH=/usr/local/opt/krb5/lib/pkgconfig:/usr/local/opt/openssl/lib/pkgconfig:/usr/local/opt/icu4c/lib/pkgconfig:/usr/local/opt/libedit/lib/pkgconfig:/usr/local/opt/libxml2/lib/pkgconfig
export PHP_BUILD_INSTALL_EXTENSION="apcu=@ imagick=@"
export PHP_BUILD_EXTRA_MAKE_ARGUMENTS=-j4
export PHP_BUILD_CONFIGURE_OPTS="--with-zlib-dir=/usr/local/opt/zlib --with-bz2=/usr/local/opt/bzip2 --with-iconv=/usr/local/opt/libiconv --with-curl=/usr/local/opt/curl --with-libedit=/usr/local/opt/libedit --with-jpeg-dir=/usr/local/opt/libjpeg --with-png-dir=/usr/local/opt/libpng --with-external-gd=/usr/local/opt/gd"
phpenv install 8.0.0
ちなみに環境は以下のとおり。
- macOS Big Sur 11.0.1
- Xcode 12.2
- phpenv v0.9.0-rc.1
- php-build v0.11.0dev
Discussion