Help us understand the problem. What is going on with this article?

Macにoci8をインストールする

More than 5 years have passed since last update.

環境

Mac OS X 10.8.3
Apache、PHP Mac標準のを使う(MAMPとかではない)
Oracle 11/g

pearインストール済み。(以下コマンドでインストール)

$ sudo php /usr/lib/php/install-pear-nozlib.phar

oci8がインストール済でも構わない(アンインストール方法も書いておきます)


1 Oracle Instant Clientをダウンロード

http://www.oracle.com/technetwork/topics/intel-macsoft-096467.html

*ググると32bit版使えとか、64bit版だとsqlplusコマンド使えないとか出るけど、無視して64bit版の以下をダウンロードする。

instantclient-basic-macos.x64-11.2.0.3.0.zip
instantclient-sdk-macos.x64-11.2.0.3.0.zip
instantclient-sqlplus-macos.x64-11.2.0.3.0.zip

解凍

$ sudo mkdir /Library/Oracle
$ sudo unzip -d /Library/Oracle/ instantclient-basic-macos.x64-11.2.0.3.0.zip
$ sudo unzip -d /Library/Oracle/ instantclient-sdk-macos.x64-11.2.0.3.0.zip
$ sudo unzip -d /Library/Oracle/ instantclient-sqlplus-macos.x64-11.2.0.3.0.zip

2 設定

$ sudo vim ~/.bash_profile

パス通す為に.bash_profileに以下を設定する。

export ORACLE_HOME=/Library/Oracle/instantclient_11_2
export DYLD_LIBRARY_PATH=/Library/Oracle/instantclient_11_2
export PATH=$PATH:$DYLD_LIBRARY_PATH

export SQL_PATH=$ORACLE_HOME
#export ORACLE_SID=XE
export PATH=$PATH:$ORACLE_HOME
export NLS_LANG=Japanese_Japan.AL32UTF8
#export TNS_ADMIN=$ORACLE_HOME/network/admin/tnsnames.ora

反映

$ source ~/.bash_profile

libファイルのリンク作成

$ sudo ln -s /Library/Oracle/instantclient_11_2/libclntsh.dylib.11.1 /Library/Oracle/instantclient_11_2/libclntsh.dylib

3 oci8インストール

既にインストール済みなら以下のコマンドでアンインストールする。

$ sudo pecl uninstall oci8

*アンインストール後は関連ディレクトリを削除する必要があるので、削除するかリネームする(詳細は下の方に書いておきます)

インストール

$ sudo pecl install oci8

途中で以下のメッセージが出る

Please provide the path to the ORACLE_HOME directory. Use 'instantclient,/path/to/instant/client/lib' if you're compiling with Oracle Instant Client [autodetect] :

で、以下を入力してエンター

instantclient,/Library/Oracle/instantclient_11_2

以下が出ればインストールは正常終了。

Build process completed successfully
Installing '/usr/lib/php/extensions/no-debug-non-zts-20090626/oci8.so'
install ok: channel://pecl.php.net/oci8-1.4.9
configuration option "php_ini" is not set to php.ini location
You should add "extension=oci8.so" to php.ini

4 確認

$ php --ri oci8

以下みたいな感じで表示されればOK.

OCI8 Support => enabled
Version => 1.4.9
Revision => $Id: e2241cffb72c940cb2ca267b6a3b0ce436de2e3e $
Active Persistent Connections => 0
Active Connections => 0
Oracle Run-time Client Library Version => 11.2.0.3.0
Oracle Instant Client Version => 11.2
Temporary Lob support => enabled
Collections support => enabled

Directive => Local Value => Master Value
oci8.max_persistent => -1 => -1
oci8.persistent_timeout => -1 => -1
oci8.ping_interval => 60 => 60
oci8.privileged_connect => Off => Off
oci8.statement_cache_size => 20 => 20
oci8.default_prefetch => 100 => 100
oci8.old_oci_close_semantics => Off => Off
oci8.connection_class => no value => no value
oci8.events => Off => Off

apache再起動

$ sudo apachectl restart

ブラウザでinfo.phpへアクセスし、oci8でページ内検索してHitするのを確認。

おしまい…。


で、「oci8」がHitしない場合。

$ sudo vim /private/var/log/apache2/error_log

エラーログの内容を確認する。

多分、以下の様なエラーが出てる筈。

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/extensions/no-debug-non-zts-20090626/oci8.so' - dlopen(/usr/lib/php/extensions/no-debug-non-zts-20090626/oci8.so, 9): Library not loaded: /ade/b/2649109290/oracle/rdbms/lib/libclntsh.dylib.11.1\n Referenced from: /usr/lib/php/extensions/no-debug-non-zts-20090626/oci8.so\n Reason: image not found in Unknown on line 0

もし、上記のエラーでなく以下の様なエラーが出てる場合は、oci8を再インストールする。

dyld: lazy symbol binding failed: Symbol not found: _OCIEnvNlsCreate
Referenced from: /usr/lib/php/extensions/no-debug-non-zts-20090626/oci8.so
Expected in: flat namespace

dyld: Symbol not found: _OCIEnvNlsCreate
Referenced from: /usr/lib/php/extensions/no-debug-non-zts-20090626/oci8.so
Expected in: flat namespace

再インストール時には、oci8インストール前に以下のディレクトリを削除するかリネームしておく。.bash_profileの値はそのままでいい。

$ cd /Library/Oracle/
$ sudo mv instantclient_11_2/ _instantclient_11_2_OLD/

念の為、oci8.soに実行権限を付加

$ cd /usr/lib/php/extensions/no-debug-non-zts-20090626/
$ sudo chmod +x oci8.so

4 launchd.confの設定

参考URL:
http://qiita.com/items/bb6a03538d4ee773c9b6

$ sudo vim /etc/launchd.conf

以下を記入して保存。

/etc/launchd.conf
setenv ORACLE_HOME /Library/Oracle/instantclient_11_2
setenv DYLD_LIBRARY_PATH /Library/Oracle/instantclient_11_2
setenv TNS_ADMIN $ORACLE_HOME/network/admin/tnsnames.ora
setenv ORACLE_SID XE

PCを再起動。

info.phpにアクセスし、oci8が表示される。

dvorak__
JetBrains社のIDEやキーボード配列、Mac OS Xの設定とかWeb系技術の投稿が多めです。 趣味でUnity3DやったりCVやったりしてます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away