概 要 |
CentOS7のLINUXサーバーから、PHPプログラムで別のオラクルデータベースサーバーへの接続・データ検索を試みます。PHPからのオラクル接続は、Oracle Instant 、PHPのOCI8拡張モジュールを使用します。
Oracle Instant インストール |
①オラクルHPからOracle Instantパッケージ入手
事前にユーザー登録し、ライセンス条項への同意し、下記リンク先より3つのオラクルクライアントパッケージを入手します。
Instant Client Downloads for Linux x86-64 (64-bit)
No | パッケージ名称 |
1 | oracle-instantclient18.5-basic-18.5.0.0.0-3.x86_64.rpm |
2 | oracle-instantclient18.5-devel-18.5.0.0.0-3.x86_64.rpm |
3 | oracle-instantclient18.5-sqlplus-18.5.0.0.0-3.x86_64.rpm |
②インストール
適当なディレクトリに入手パッケージをコピーし、コマンドラインでコピー先のディレクトリに移動します。順番に下記コマンドで3つのパッケージをインストールします。
rpm -ivh oracle-instantclient18.5-basic-18.5.0.0.0-3.x86_64.rpm rpm -ivh oracle-instantclient18.5-devel-18.5.0.0.0-3.x86_64.rpm rpm -ivh oracle-instantclient18.5-sqlplus-18.5.0.0.0-3.x86_64.rpm |
③パス設定ファイル作成
“oracle-instantclient.conf” ファイルを下記の通り作成します。
etc/ld.so.conf.d/oracle-instantclient.conf |
ファイル内には、次のライブラリパスを書きます。
/usr/lib/oracle/18.5/client64/lib |
次のコマンドを実行します。(ライブラリに対しリンク作成やキャッシュします。)
ldconfig |
④ “.bash_profile” 編集
vi エディタで .bash_profile を開きます。
vi .bash_profile |
次の内容を追記します。
export LD_LIBRARY_PATH=/usr/lib/oracle/18.5/client64/lib:$LD_LIBRARY_PATH export PATH=$PATH:/usr/lib/oracle/18.5/client64/lib export NLS_LANG=Japanese_Japan.AL32UTF8 |
追記後、下記コマンドで .bash_profile 変更を即時適用します。
source .bash_profile |
⑤SqlPlusで接続確認
コマンドラインから下記内容を入力すると、パスワード入力を求められます。パスワード入力すると、sql 入力できる状態になりますので、適当な sql を入力し、接続確認出来ます。
sqlplus64 ‘接続ユーザー名@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=IPアドレス) (PORT=1521))(CONNECT_DATA=(SERVICE_NAME=サービス名)))’ |
※黄緑部は環境・接続等で異なります。
⑥OCI8インストール
下記にて、oci8 拡張モジュールインストールします。
yum install –enablerepo=remi-php72 php-oci8.x86_64 |
⑦SELinux無効化
SELinux利用により、細かいアクセス制御が可能になる様ですが、一方で管理も困難になるかもしれません。とりあえず、今回はこの機能は停止します。vim で設定ファイルを編集します。
vim /etc/selinux/config |
下記の通り、SELINUX設定を “disabled” にします。
SELINUX=disabled |
再起動して、設定を有効化します。
⑧インストールの確認
実際にプログラムを実行する前にPHP‗INFOや下記等のコマンドでインストール状況を確認することが出来ます。
php -i | egrep -i ‘oracle|oci’ |
まとめ |
簡単なPHPプログラムを作成し、Windowsクライアントパソコンから、今回オラクルクライアントをインストールしたCentOS7 LINUXサーバー経由で別のオラクルデータベースサーバーに接続し、データ検索結果をブラウザ表示することを確認しました。
また、近いうちに使用したOCI接続,PDO-OCI接続の概要についてはまとめたいと思っています。