Docker
Pull the docker image
docker pull centos:6.7
List images
docker images
Run the docker image
docker run -ti centos:6.7 /bin/bash
CentOS
Update and updgrade
yum update
yum upgrade
Add EPEL repo
yum install epel-release
Install packages
yum install wget
yum install nginx
yum install php
yum install php-pear
yum install php-devel
yum install php-pdo
yum install php-fpm
yum install libaio
yum install tar
yum install gcc g++
Make and enter to download directory
cd /root
mkdir downloads
cd downloads
Download the oracle instance client 12.1
wget http://download.oracle.com/otn/linux/instantclient/121020/oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm?AuthParam=XXXXXXX -O oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
wget http://download.oracle.com/otn/linux/instantclient/121020/oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm?AuthParam=XXXXXXX -O oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
Install the oracle client
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
Make symbol link for 64bit arch
ln -s /usr/include/oracle/12.1/client64 /usr/include/oracle/12.1/client
ln -s /usr/lib/oracle/12.1/client64 /usr/lib/oracle/12.1/client
Create $LD_LIBRARY_PATH
variable
echo "LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib" >> /etc/profile.d/oracle.sh
source /etc/profile.d/oracle.sh
Test the $LD_LIBRARY_PATH
variable
echo $LD_LIBRARY_PATH
Download PHP 5.3.3 for related installed version
wget http://museum.php.net/php5/php-5.3.3.tar.gz -O php-5.3.3.tar.gz
Unzip the PHP 5.3.3 and enter to pdo_oci extension directory
tar zxvf php-5.3.3.tar.gz
cd php-5.3.3
cd ext/pdo_oci
Edit the m4 config file to following content
vi config.m4
SUPPORTED_LIB_VERS="9.0 10.1 11.1 12.1" <---
case $PDO_OCI_VERSION in
9.0|10.1|10.2|11.1|11.2|12.1) <---
PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD)
;;
*)
AC_MSG_ERROR(Unsupported Oracle version $PDO_OCI_VERSION)
;;
esac
Generate the configure file, build and install the extension
phpize
./configure --with-pdo-oci=instantclient,/usr,12.1
make
make install
Test script
<?php
try {
$config = array(
"host" => "10.0.1.2",
"port" => "1521",
"database" => "xe",
"username" => "system",
"password" => "oracle",
);
// TNS
$tns = "(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = {$config['host']})(PORT = {$config['port']}))(CONNECT_DATA =(SID = {$config['database']})))";
echo "<h3>TNS</h3>";
echo $tns;
echo "<hr>";
// PDO
$pdo = new PDO("oci:dbname=$tns", $config['username'], $config['password'], array(
PDO::ATTR_CASE => PDO::CASE_LOWER,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_ORACLE_NULLS => PDO::NULL_NATURAL,
));
echo "<h3>PDO</h3>";
echo var_dump($pdo);
echo "<hr>";
// Query
echo "<h3>Query</h3>";
echo "<hr>";
$statement = $pdo->prepare("SELECT owner, table_name FROM all_tables");
$statement->execute();
while($row = $statement->fetch(PDO::FETCH_OBJ)) {
echo "<strong>owner:</strong> {$row->owner}, <strong>table_name:</strong> {$row->table_name}<br>";
}
}catch(Exception $e) {
echo "<pre>";
print_r($e);
echo "</pre>";
}