phpbrewでphp8.0をインストールするときのエラー

2021年10月3日日曜日

Mac PHP

t f B! P L
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
やっと成功しました!

このブログを検索

QooQ