Mac(macOS Big Sur 11.5.2)にphpbrewを使ってphp8.0をインストールしようとしたら、大量のエラーが発生しました。最終的にはインストールに成功しましたが、予想以上に大変でした。
まずは普通にインストール
次のコマンドでphp8.0をインストールします。
$phpbrew install 8.0
すると、次のようなエラーが...
===> phpbrew will now build 8.0.5
Error: Configure failed:
The last 5 lines in the log file:
installed software in a non-standard prefix.
Alternatively, you may set the environment variables XSL_CFLAGS
and XSL_LIBS to avoid the need to call pkg-config.
エラーを消すために、.bash_profileにlibxsltが関係する環境変数に設定します。
export LDFLAGS="-L/usr/local/opt/libxslt/lib"
export CPPFLAGS="-I/usr/local/opt/libxslt/include"
export PKG_CONFIG_PATH="/usr/local/opt/libxslt/lib/pkgconfig"
再度、インストール
ターミナルを再起動して、php8.0をインストールします。
$phpbrew install 8.0
すると、今度は次のようなエラーが...
The last 5 lines in the log file:
“_xsltXPathGetTransformContext”, referenced from:
_xsl_ext_function_php in xsltprocessor.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [sapi/cli/php] Error 1
libxml2が関係しているようなので、libxml2を再インストールして(brew reinstall libxml2).bash_profileにlibxml2が関係する環境変数に設定します。
export LDFLAGS=$LDFLAGS:"-L/usr/local/opt/libxml2/lib"
export CPPFLAGS=$CPPFLAGS:"-I/usr/local/opt/libxml2/include"
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:"/usr/local/opt/libxml2/lib/pkgconfig"
再度、インストール
ターミナルを再起動して、php8.0をインストールします。
$phpbrew install 8.0
すると、今度は次のようなエラーが...
error: Configure failed:
The last 5 lines in the log file:
installed software in a non-standard prefix.
Alternatively, you may set the environment variables OPENSSL_CFLAGS
and OPENSSL_LIBS to avoid the need to call pkg-config.
opensslが関係しているようなので、opensslを再インストールして(brew reinstall openssl).bash_profileにopensslが関係する環境変数に設定します。
export LDFLAGS=$LDFLAGS:"-L/usr/local/opt/openssl@3/lib"
export CPPFLAGS=$CPPFLAGS:"-I/usr/local/opt/openssl@3/include"
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:"/usr/local/opt/openssl@3/lib/pkgconfig"
再度、インストール
ターミナルを再起動して、php8.0をインストールします。
$phpbrew install 8.0
すると、今度は次のようなエラーが...
error: use of undeclared identifier ’RSA_SSLV23_PADDING
/usr/local/Cellar/openssl@3/3.0.0/include/openssl/macros.h:62:52: note: expanded from macro ‘OSSL_DEPRECATED’
# define OSSL_DEPRECATED(since) __attribute__((deprecated))
^
/Users/taro/.phpbrew/build/php-8.0.5/ext/openssl/openssl.c:6390:6: warning: passing ‘const struct rsa_st *’ to parameter of type ‘RSA *’ (aka ‘struct rsa_st *’) discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
EVP_PKEY_get0_RSA(pkey),
^~~~~~~~~~~~~~~~~~~~~~~
/usr/local/Cellar/openssl@3/3.0.0/include/openssl/rsa.h:289:29: note: passing argument to parameter ‘rsa’ here
RSA *rsa, int padding);
^
108 warnings and 1 error generated.
どうやらopenssl@3だとエラーが発生するようなので、openssl@3をアンインストールしてopenssl@1.1を再インストールします。
$brew uninstall openssl@3
$brew install openssl@1.1
再度、インストール
ターミナルを再起動して、php8.0をインストールします。
$phpbrew install 8.0
Congratulations! Now you have PHP with 8.0.5 as php-8.0.5
* To configure your installed PHP further, you can edit the config file at
/Users/jerry/.phpbrew/php/php-8.0.5/etc/php.ini
* WARNING:
You haven't setup your .bashrc file to load phpbrew shell script yet!
Please run 'phpbrew init' to see the steps!
To use the newly built PHP, try the line(s) below:
$ phpbrew use php-8.0.5
Or you can use switch command to switch your default php to php-8.0.5:
$ phpbrew switch php-8.0.5
やっと成功しました!