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

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

More than 1 year has passed since last update.

環境

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の運用の理解の一助になればと思いここに書籍を紹介させて頂います。





bluemooninc
サーバーサイド・エンジニアとして15年。主な言語は PHP, Python, Ruby, NodeJS, Java. IoTエンジニアとして3年。Arduino, RaspberryPi を中心に半導体基盤設計からIoTシステム構築まで。主な言語はC++。システム・エンジニア、データベース・エンジニアとしては25年。主なDBはMySQL, Oracle, SQLite, MS-Access。
https://www.bluemooninc.jp
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした