MacOSXにoci8とpdo-ociに対応したPHPを入れる
面倒なことに、Mac標準のPHPはpdo-ociに対応していない。
本来はbrewでオプション指定(brew install php53 --with-pdo-oci
)で入れればよいはずなのだが、
何故かうまくいかないのでphp-buildを使って対応版を入れる。
Oracle Instant Clientのインストール
- Oracleのサイトから64bit版のモジュールをDLする。
- 適当なディレクトリに配置する
- ~/Applications/instantclient_11_2
配置したディレクトリをORACLE_HOMEとして登録(実際は.zshrcやらに)
export ORACLE_HOME=~/Applications/instantclient_11_2
libclntsh.dylibのシンボリックリンク作成
cd $ORACLE_HOME ln -s libclntsh.dylib.11.1 libclntsh.dylib
OpenSSLのパッケージインストール
OS標準のものは古いのでhomebrewで入れる。
適当にPATHは調整。
brew install openssl brew link openssl --force
php-buildのセットアップ
- パッケージインストール
brew install php-build php-version libmcrypt
- ビルドオプション追加
/usr/local/share/php-build/default_configure_options
にオプションを追記する。--with-oci8=shared,instantclient,/Users/yotama/Applications/instantclient_11_2,11.2 --with-pdo-oci=shared,instantclient,/Users/yotama/Applications/instantclient_11_2,11.2
- DLするソースのパスが間違ってるので書き換える
/usr/local/share/php-build/definitions
配下に定義ファイルがある。
ここでは5.3.24を対象とする。install_package "http://php.net/distributions/php-5.3.24.tar.bz2" ↓ install_package "http://museum.php.net/php5/php-5.3.24.tar.bz2"
ビルド実行
第2引数がインストールされるルートディレクトリになる。
今回は、~/local/php/5.3.24配下にインストールする。
php-build 5.3.24 ~/local/php/5.3.24
PATHを通す
今回ビルドしたphpにPATHを通す
export PATH=$HOME/local/php/5.3.24/bin:$PATH
php.ini修正
以下を~/local/php/5.3.24/etc/php.ini
に追記
extension=oci8.so extension=pdo_oci.so
リンクエラーの修正
そのまま実行すると、以下の様な警告がでる。
PHP Warning: PHP Startup: Unable to load dynamic library '/Users/yotama/local/php/5.3.24/lib/php/extensions/no-debug-non-zts-20090626/oci8.so' - dlopen(/Users/yotama/local/php/5.3.24/lib/php/extensions/no-debug-non-zts-20090626/oci8.so, 9): Library not loaded: /ade/b/3071542110/oracle/rdbms/lib/libclntsh.dylib.11.1 Referenced from: /Users/yotama/local/php/5.3.24/lib/php/extensions/no-debug-non-zts-20090626/oci8.so Reason: image not found in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library '/Users/yotama/local/php/5.3.24/lib/php/extensions/no-debug-non-zts-20090626/pdo_oci.so' - dlopen(/Users/yotama/local/php/5.3.24/lib/php/extensions/no-debug-non-zts-20090626/pdo_oci.so, 9): Library not loaded: /ade/b/3071542110/oracle/rdbms/lib/libclntsh.dylib.11.1 Referenced from: /Users/yotama/local/php/5.3.24/lib/php/extensions/no-debug-non-zts-20090626/pdo_oci.so Reason: image not found in Unknown on line 0
動的リンクのパスがおかしいので、install_name_tool
で修正する。
cd ~/local/php/5.3.24/lib/php/extensions/no-debug-non-zts-20090626/ sudo install_name_tool -change /ade/b/3071542110/oracle/rdbms/lib/libclntsh.dylib.11.1 $ORACLE_HOME/libclntsh.dylib.11.1 oci8.so sudo install_name_tool -change /ade/b/3071542110/oracle/rdbms/lib/libclntsh.dylib.11.1 $ORACLE_HOME/libclntsh.dylib.11.1 pdo_oci.so
他にも依存パスがおかしければ順次修正
確認
$ php -v PHP 5.3.24 (cli) (built: Jul 7 2014 23:56:35) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies with Xdebug v2.2.1, Copyright (c) 2002-2012, by Derick Rethans