【環境】
CentOS 7.2.1511
PHPのoci関数を利用するまでの手順。(PHP本体はインストール済みの状態)
最初に「Oracle Instant Client」を導入する。
Oracle社のWebサイトから、RPMファイルを入手する。アカウント登録が必要。
色々とパッケージがあるが、以下の2つで良い。
・Basic
・SDK
RPMコマンドでインストール。
# rpm -ivh oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm # rpm -ivh oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
必要なライブラリがインストールされる。
# rpm -ql oracle-instantclient12.1-basic /usr/lib/oracle/12.1/client64/bin/adrci /usr/lib/oracle/12.1/client64/bin/genezi /usr/lib/oracle/12.1/client64/lib/libclntsh.so.12.1 /usr/lib/oracle/12.1/client64/lib/libclntshcore.so.12.1 /usr/lib/oracle/12.1/client64/lib/libipc1.so /usr/lib/oracle/12.1/client64/lib/libmql1.so /usr/lib/oracle/12.1/client64/lib/libnnz12.so /usr/lib/oracle/12.1/client64/lib/libocci.so.12.1 /usr/lib/oracle/12.1/client64/lib/libociei.so /usr/lib/oracle/12.1/client64/lib/libocijdbc12.so /usr/lib/oracle/12.1/client64/lib/libons.so /usr/lib/oracle/12.1/client64/lib/liboramysql12.so /usr/lib/oracle/12.1/client64/lib/ojdbc6.jar /usr/lib/oracle/12.1/client64/lib/ojdbc7.jar /usr/lib/oracle/12.1/client64/lib/xstreams.jar # rpm -ql oracle-instantclient12.1-devel /usr/include/oracle/12.1/client64/ldap.h /usr/include/oracle/12.1/client64/nzerror.h /usr/include/oracle/12.1/client64/nzt.h /usr/include/oracle/12.1/client64/occi.h /usr/include/oracle/12.1/client64/occiAQ.h /usr/include/oracle/12.1/client64/occiCommon.h /usr/include/oracle/12.1/client64/occiControl.h /usr/include/oracle/12.1/client64/occiData.h /usr/include/oracle/12.1/client64/occiObjects.h /usr/include/oracle/12.1/client64/oci.h /usr/include/oracle/12.1/client64/oci1.h /usr/include/oracle/12.1/client64/oci8dp.h /usr/include/oracle/12.1/client64/ociap.h /usr/include/oracle/12.1/client64/ociapr.h /usr/include/oracle/12.1/client64/ocidef.h /usr/include/oracle/12.1/client64/ocidem.h /usr/include/oracle/12.1/client64/ocidfn.h /usr/include/oracle/12.1/client64/ociextp.h /usr/include/oracle/12.1/client64/ocikpr.h /usr/include/oracle/12.1/client64/ocixmldb.h /usr/include/oracle/12.1/client64/ocixstream.h /usr/include/oracle/12.1/client64/odci.h /usr/include/oracle/12.1/client64/oratypes.h /usr/include/oracle/12.1/client64/ori.h /usr/include/oracle/12.1/client64/orid.h /usr/include/oracle/12.1/client64/orl.h /usr/include/oracle/12.1/client64/oro.h /usr/include/oracle/12.1/client64/ort.h /usr/include/oracle/12.1/client64/xa.h /usr/lib/oracle/12.1/client64/lib/libclntsh.so /usr/lib/oracle/12.1/client64/lib/libclntshcore.so /usr/lib/oracle/12.1/client64/lib/libocci.so /usr/lib/oracle/12.1/client64/lib/ottclasses.zip /usr/share/oracle/12.1/client64/admin/oraaccess.xsd /usr/share/oracle/12.1/client64/demo/cdemo81.c /usr/share/oracle/12.1/client64/demo/demo.mk /usr/share/oracle/12.1/client64/demo/occidemo.sql /usr/share/oracle/12.1/client64/demo/occidemod.sql /usr/share/oracle/12.1/client64/demo/occidml.cpp /usr/share/oracle/12.1/client64/demo/occiobj.cpp /usr/share/oracle/12.1/client64/demo/occiobj.typ /usr/share/oracle/12.1/client64/demo/oraaccess.xml /usr/share/oracle/12.1/client64/demo/ott /usr/share/oracle/12.1/client64/demo/setuporamysql.sh
次に、oci8モジュールを導入する。
PECLからoci8関数を導入。
# pecl install oci8
とするとエラーになる。
PHP 7未満の場合は、「oci8-2.0.11」を指定するようにとの事。
https://pecl.php.net/package/oci8
# pecl install oci8-2.0.11
/usr/lib64/php/modules/oci8.so が生成される。
モジュールを読み込むため、/etc/php.d/oci8.ini を作成する。
; Enable oci8 extension module
extension=oci8.so
httpdを再起動
# systemctl restart httpd
モジュールが読み込まれているか確認。
$ php -m | grep oci oci8
phpinfo で確認する場合の例。
$ php -i | egrep -i 'oracle|oci' /etc/php.d/oci8.ini, oci8 OCI8 Support => enabled OCI8 DTrace Support => disabled OCI8 Version => 2.0.11 Oracle Run-time Client Library Version => 12.1.0.2.0 Oracle Compile-time Instant Client Version => 12.1 oci8.connection_class => no value => no value oci8.default_prefetch => 100 => 100 oci8.events => Off => Off oci8.max_persistent => -1 => -1 oci8.old_oci_close_semantics => Off => Off oci8.persistent_timeout => -1 => -1 oci8.ping_interval => 60 => 60 oci8.privileged_connect => Off => Off oci8.statement_cache_size => 20 => 20
「oci_connect」関数が存在するかチェック。
$ php --rf oci_connect Function [ <internal:oci8> function oci_connect ] { - Parameters [5] { Parameter #0 [ <required> $username ] Parameter #1 [ <required> $password ] Parameter #2 [ <optional> $connection_string ] Parameter #3 [ <optional> $character_set ] Parameter #4 [ <optional> $session_mode ] } }
存在しない場合。
$ php --rf oci_connect Exception: Function oci_connect() does not exist