LoginSignup
10
11

More than 5 years have passed since last update.

既存のCentOS7にoci8とpdo_ociを追加する手順書

Last updated at Posted at 2018-08-19

環境

CentOS7.2 64bit
PHP7.2

前提

Apache, PHP7(PDOモジュール)がインストールされている事。
yum -y install php-devel にて phpize が使用できる状態である事。

今回追加する内容

Instant Client18.3
oci8
pdo_oci

準備

Instant Clientの設置

ファイルの取得

Oracleのサイトから下記zipを落としてくる。
http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html

  • instantclient-basic-linux.x64-18.3.0.0.0.zip
  • instantclient-sdk-linux.x64-18.3.0.0.0.zip

CentOS内の適当なディレクトリに配置する(/tmpとか)。

解凍、設置

上記zipを設置したディレクトリに移動して解凍。

unzip instantclient-basic-linux.x64-18.3.0.0.0dbru.zip
unzip instantclient-sdk-linux.x64-18.3.0.0.0dbru.zip

解凍したら移動する。

mv instantclient_18_3 /opt/oracle/

注)/opt/oracleフォルダ下にinstantclient_18_3のファイルが移動する。

シンボリックリンクをはる。

cd /opt/oracle
ln -s libclntsh.so.11.1 libclntsh.so

/etc/profileに追記し、必要なPATHを通す。

export PHP_DTRACE=yes
export ORACLE_HOME=/opt/oracle
export NLS_LANG=Japanese_Japan.AL32UTF8
export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME:$PATH

反映。

source /etc/profile

ApacheにもPATHを通すために、/etc/sysconfig/httpdを編集する。

最後に追加

export ORACLE_HOME=/opt/oracle
export LD_LIBRARY_PATH=$ORACLE_HOME

service httpd restart

ここまでで設定したPATHが通っているかを確認する。

httpdに追加したPATHは、phpinfo内のEnvironment(Apache Environmentではない)で確認できる。

PHPソースの用意

DTraceサポートを有効にする。
/etc/profileに追記し、反映。

yum -y install systemtap-sdt-devel
export PHP_DTRACE=yes

今インストールされているPHPと同じバージョンのソースを取ってくる&解凍する。
本解説では7.2。

cd ~/
wget http://jp2.php.net/get/php-7.2.9.tar.gz/from/this/mirror
tar xzvf mirror

oci8のインストール

移動して、configureとmakeとmake install。

cd php-7.2.9/ext/oci8/
phpize
./configure --with-oci8=shared,instantclient,/opt/oracle,18.3
make
make install

php.iniに追加するのではなく、iniファイルを下記場所に追加する。

/etc/php.d/oci8.ini
extension=oci8.so

Apache再起動。

service httpd restart

phpinfoでoci8が有効になっていることを確認する。

pdo_ociのインストール

cd php-7.2.9/ext/pdo_oci/
phpize
./configure --with-pdo_oci=shared,instantclient,/opt/oracle,18.3
make
make install

oci8と同様に、iniファイルを追加する。

/etc/php.d/pdo_oci.ini
extension=pdo_oci.so

Apache再起動。

service httpd restart

phpinfoでpdo_ociが有効になっていることを確認する。

Screen Shot 2018-08-19 at 17.57.26.png
Screen Shot 2018-08-19 at 17.58.46.png

確認用PHPソース

/var/www/html/pdo_oci.php

<?php
define("DB_HOST", "##host name##");
define("DB_PORT", "##port##"); // デフォルト1521
define("DB_USERNAME", "##schema name##");
define("DB_PASSWORD", "##password##");
define("DB_SID", "##sid##");

try {
    $dbh = new PDO("oci:dbname=//".DB_HOST.":".DB_PORT."/".DB_SID, DB_USERNAME, DB_PASSWORD);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    die($e->getMessage());
}
echo 'OK';
exit(0); 

続きの読み物

PHP7で接続する事により、既存ORACLEのデータを利用しながら新システムを構築する事ができるようになります。次のステップとして、Oracle12cの運用の理解の一助になればと思いここに書籍を紹介させて頂います。





10
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11