問題
phpbrewは,php拡張をインストール・管理する機能を提供しており,以下のようにphp拡張を追加することができます.
phpbrew ext install mysqlnd
しかし,macOS Sierra(10.12.6)にて,以下のようなエラーが出てしまい,インストールできない問題に遭遇しました.
configure: error: Cannot find OpenSSL's <evp.h>
この解決方法を書きます.
opensslをインストールする
まず,mysqlndの依存ライブラリであるOpenSSLをインストールしておいてください.
brew install openssl
Mac OS XからOpenSSLのヘッダを提供しなくなったようです.
詳しい話はこちらを.
Mac OS X El CapitanからOpenSSLのヘッダファイルが消えた話
pkg-configのパスを設定する
以下のように,mysqlndをビルドする時に,brew経由でインストールしたOpenSSLを見つけられるように,PKG_CONFIG_PATH
を指定しておいてください.
export PKG_CONFIG_PATH=/usr/local/opt/openssl/lib/pkgconfig
mysqlndをインストールする
以下のコマンドで,mysqlndをインストールしてください.
PHP_OPENSSL_DIR=yes phpbrew ext install mysqlnd
PHP_OPENSSL_DIR=yes
について,
PHP :: Bug #72363 :: Cannot find OpenSSL evp.h
によれば,
The cause of this is because after running the command 'phpize' the configure script has a variable (PHP_OPENSSL_DIR) that is not set "yes"
訳) この問題の原因は,
phpize
コマンドが走った後に,configureスクリプトが持つPHP_OPENSSL_DIR
が"yes"に設定されていないことだ.
とあります.
PHP_OPENSSL_DIR
が"yes"に設定されていないと,pkg-configを利用した探索が行われません.
このバグを回避するために,PHP_OPENSSL_DIR
を自分で設定しています.
なお,場当たり的な対処であるため,何かもっと良い解決法をご存じの方がいらっしゃいましたらご教授いただければと思います.