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

## 環境

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が有効になっていることを確認する。

<img width="757" alt="Screen Shot 2018-08-19 at 17.57.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/40217/57a06dec-727f-b4f2-4c41-de333384cd57.png">
<img width="754" alt="Screen Shot 2018-08-19 at 17.58.46.png" src="https://qiita-image-store.s3.amazonaws.com/0/40217/f0c43295-78d5-d042-1c8c-1d4b556816e2.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の運用の理解の一助になればと思いここに書籍を紹介させて頂います。
<table><tr><td>
<a href="https://www.amazon.co.jp/Oracle-Enterprise-Manager-12c%E3%81%AB%E3%82%88%E3%82%8B%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E9%81%8B%E7%94%A8%E3%82%AC%E3%82%A4%E3%83%89-%E7%AF%A0%E7%94%B0/dp/4893119508/ref=as_li_ss_il?s=books&ie=UTF8&qid=1534669209&sr=1-12&keywords=oracle12c&linkCode=li2&tag=bluemooninc-22&linkId=63d45d058b68207a0625d520981dc5e0&language=ja_JP" target="_blank"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=4893119508&Format=_SL160_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=bluemooninc-22&language=ja_JP" ></a><img src="https://ir-jp.amazon-adsystem.com/e/ir?t=bluemooninc-22&language=ja_JP&l=li2&o=9&a=4893119508" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
</td><td>
<a href="https://www.amazon.co.jp/%E5%9B%B3%E8%A7%A3%E5%85%A5%E9%96%80-%E3%82%88%E3%81%8F%E3%82%8F%E3%81%8B%E3%82%8B-%E6%9C%80%E6%96%B0Oracle%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%81%AE%E5%9F%BA%E6%9C%AC%E3%81%A8%E4%BB%95%E7%B5%84%E3%81%BF-%E7%AC%AC4%E7%89%88-%E6%B0%B4%E7%94%B0%E5%B7%B4-ebook/dp/B0177E99IK/ref=as_li_ss_il?s=books&ie=UTF8&qid=1534669209&sr=1-5&keywords=oracle12c&linkCode=li2&tag=bluemooninc-22&linkId=f6dc7ea685dd98987ecc82de862c0bef&language=ja_JP" target="_blank"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B0177E99IK&Format=_SL160_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=bluemooninc-22&language=ja_JP" ></a><img src="https://ir-jp.amazon-adsystem.com/e/ir?t=bluemooninc-22&language=ja_JP&l=li2&o=9&a=B0177E99IK" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
</td></tr></table>