Document Type | Technical Information
Category | Interface/Integration
Applicable Product Version | T5
Document Number | TIITI061
Overview
This document describes how to install and integrate PHP with tbOCI. (PHP โ tbOCI Integration Guide)
Method
1. Create PHP User Account
[root@public data]# useradd -d /data/php -g dba php
[root@public data]# passwd php
Changing password for user php.
New password:
BAD PASSWORD: The password is a palindrome
Retype new password:
passwd: all authentication tokens updated successfully.
[root@public data]# su - php
[php@public ~]$ pwd
/data/php
2. Upload Files
1. sdk-10.2.0.5.0-linux-x64.zip : Oracle oci.h
2. basic-10.2.0.5.0-linux-x64.zip : Oracle library
3. oci8-2.0.8.tar : oci
4. php-5.6.11.tar.gz : PHP installation file
5. Tibero binary : Tibero Client installation file* Oracle client files can be downloaded from the link below
https://www.oracle.com/kr/database/technologies/instant-client/linux-x86-64-downloads.html
* PHP files can be downloaded from the link below
http://kr1.php.net/downloads.php
* OCI8 can be downloaded from the link below
http://pecl.php.net/package/oci8
public@php:/data/php $ ls -tlr
total 335324
-rw-r--r-- 1 php dba 603960 Mar 9 16:21 sdk-10.2.0.5.0-linux-x64.zip
-rw-r--r-- 1 php dba 36840810 Mar 9 16:21 basic-10.2.0.5.0-linux-x64.zip
-rw-r--r-- 1 php dba 1608704 Mar 9 16:21 oci8-2.0.8.tar
-rw-r--r-- 1 php dba 18319185 Mar 9 16:21 php-5.6.11.tar.gz
-rw-r--r-- 1 php dba 285988869 Mar 9 16:22 tibero5-bin-FS02-~~.tar.gz
3. Install PHP
public@php:/data/php $ gzip -dc php-5.6.11.tar.gz | tar xvf โ
php-5.6.11/
php-5.6.11/php.ini-production
php-5.6.11/.gdbinit
php-5.6.11/Makefile.gcov
โฆ omitted โฆ
php-5.6.11/pear/Makefile.frag
php-5.6.11/README.SUBMITTING_PATCH
public@php:/data/php $ cd php-5.6.11/
public@php:/data/php/php-5.6.11 $ ./configure --prefix=$HOME/php5
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for a sed that does not truncate output... /bin/sed
โฆ omitted โฆ
Thank you for using PHP.
config.status: creating php5.spec
config.status: creating main/build-defs.h
config.status: creating scripts/phpize
config.status: creating scripts/man1/phpize.1
config.status: creating scripts/php-config
config.status: creating scripts/man1/php-config.1
config.status: creating sapi/cli/php.1
config.status: creating sapi/cgi/php-cgi.1
config.status: creating ext/phar/phar.1
config.status: creating ext/phar/phar.phar.1
config.status: creating main/php_config.h
config.status: executing default commands
public@php:/data/php/php-5.6.11 $
public@php:/data/php/php-5.6.11 $ make
/bin/sh /data/php/php-5.6.11/libtool --silent --preserve-dup-deps --mode=compile cc -Iext/opcache/ -I/data/php/php-5.6.11/ext/opcache/ -DPHP_ATOM_INC -I/data/php/php-5.6.11/include -I/data/php/php-5.6.11/main -I/data/php/php-5.6.11 -I/data/php/php-5.6.11/ext/date/lib -I/data/php/php-5.6.11/ext/ereg/regex -I/usr/include/libxml2 -I/data/php/php-5.6.11/ext/sqlite3/libsqlite -I/data/php/php-5.6.11/TSRM -I/data/php/php-5.6.11/Zend -I/usr/include -g -O2 -fvisibility=hidden -c /data/php/php-5.6.11/ext/opcache/ZendAccelerator.c -o ext/opcache/ZendAccelerator.lo
โฆ omitted โฆ
PEAR package PHP_Archive not installed: generated phar will require PHP's phar extension be enabled.
clicommand.inc
directorytreeiterator.inc
invertedregexiterator.inc
directorygraphiterator.inc
pharcommand.inc
phar.inc
Build complete.
Don't forget to run 'make test'.
public@php:/data/php/php-5.6.11 $
public@php:/data/php/php-5.6.11 $ make install
Installing shared extensions: /data/php/php5/lib/php/extensions/no-debug-non-zts-20131226/
Installing PHP CLI binary: /data/php/php5/bin/
Installing PHP CLI man page: /data/php/php5/php/man/man1/
Installing PHP CGI binary: /data/php/php5/bin/
Installing PHP CGI man page: /data/php/php5/php/man/man1/
Installing build environment: /data/php/php5/lib/php/build/
Installing header files: /data/php/php5/include/php/
Installing helper programs: /data/php/php5/bin/
program: phpize
program: php-config
Installing man pages: /data/php/php5/php/man/man1/
page: phpize.1
page: php-config.1
Installing PEAR environment: /data/php/php5/lib/php/
[PEAR] Archive_Tar - installed: 1.3.12
[PEAR] Console_Getopt - installed: 1.3.1
[PEAR] Structures_Graph- installed: 1.0.4
[PEAR] XML_Util - installed: 1.2.3
[PEAR] PEAR - installed: 1.9.5
Wrote PEAR system config file at: /data/php/php5/etc/pear.conf
You may want to add: /data/php/php5/lib/php to your php.ini include_path
/data/php/php-5.6.11/build/shtool install -c ext/phar/phar.phar /data/php/php5/bin
ln -s -f phar.phar /data/php/php5/bin/phar
Installing PDO headers: /data/php/php5/include/php/ext/pdo/
public@php:/data/php/php-5.6.11 $
4. Install Oracle InstantClient (basic, sdk) and Add Environment Variables
public@php:/data/php $ unzip sdk-10.2.0.5.0-linux-x64.zip
Archive: sdk-10.2.0.5.0-linux-x64.zip
creating: instantclient_10_2/sdk/
creating: instantclient_10_2/sdk/include/
inflating: instantclient_10_2/sdk/include/occi.h
inflating: instantclient_10_2/sdk/include/occiCommon.h
inflating: instantclient_10_2/sdk/include/occiControl.h
inflating: instantclient_10_2/sdk/include/occiData.h
inflating: instantclient_10_2/sdk/include/occiObjects.h
inflating: instantclient_10_2/sdk/include/occiAQ.h
inflating: instantclient_10_2/sdk/include/oci.h
inflating: instantclient_10_2/sdk/include/oci1.h
inflating: instantclient_10_2/sdk/include/oci8dp.h
inflating: instantclient_10_2/sdk/include/ociap.h
inflating: instantclient_10_2/sdk/include/ociapr.h
inflating: instantclient_10_2/sdk/include/ocidef.h
inflating: instantclient_10_2/sdk/include/ocidem.h
inflating: instantclient_10_2/sdk/include/ocidfn.h
inflating: instantclient_10_2/sdk/include/ociextp.h
inflating: instantclient_10_2/sdk/include/ocikpr.h
inflating: instantclient_10_2/sdk/include/ocixmldb.h
inflating: instantclient_10_2/sdk/include/odci.h
inflating: instantclient_10_2/sdk/include/oratypes.h
inflating: instantclient_10_2/sdk/include/ori.h
inflating: instantclient_10_2/sdk/include/orid.h
inflating: instantclient_10_2/sdk/include/orl.h
inflating: instantclient_10_2/sdk/include/oro.h
inflating: instantclient_10_2/sdk/include/ort.h
inflating: instantclient_10_2/sdk/include/xa.h
inflating: instantclient_10_2/sdk/include/nzt.h
inflating: instantclient_10_2/sdk/include/nzerror.h
creating: instantclient_10_2/sdk/demo/
inflating: instantclient_10_2/sdk/demo/demo.mk
inflating: instantclient_10_2/sdk/demo/cdemo81.c
inflating: instantclient_10_2/sdk/demo/occidemo.sql
inflating: instantclient_10_2/sdk/demo/occidemod.sql
inflating: instantclient_10_2/sdk/demo/occidml.cpp
inflating: instantclient_10_2/sdk/demo/occiobj.cpp
inflating: instantclient_10_2/sdk/demo/occiobj.typ
inflating: instantclient_10_2/sdk/SDK_README
extracting: instantclient_10_2/sdk/ottclasses.zip
inflating: instantclient_10_2/sdk/ott
public@php:/data/php $ unzip basic-10.2.0.5.0-linux-x64.zip
Archive: basic-10.2.0.5.0-linux-x64.zip
inflating: instantclient_10_2/BASIC_README
inflating: instantclient_10_2/classes12.jar
inflating: instantclient_10_2/genezi
inflating: instantclient_10_2/libclntsh.so.10.1
inflating: instantclient_10_2/libnnz10.so
inflating: instantclient_10_2/libocci.so.10.1
inflating: instantclient_10_2/libociei.so
inflating: instantclient_10_2/libocijdbc10.so
inflating: instantclient_10_2/ojdbc14.jar
public@php:/data/php $ cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
PS1='['`hostname`@`whoami`:'$PWD']'$ '
export PS1=`uname -n`'@$LOGNAME:$PWD $ '
export ORACLE_HOME=/data/php/instantclient_10_2
5. Install Tibero Client and Add Environment Variables + Add PHP PATH
public@php:/data/php $ gzip -dc tibero5-bin-FS02*.gz | tar xvf โ
public@php:/data/php $ cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
PS1='['`hostname`@`whoami`:'$PWD']'$ '
export PS1=`uname -n`'@$LOGNAME:$PWD $ '
export ORACLE_HOME=/data/php/instantclient_10_2
### tibero ###
export TB_HOME=/data/php/tibero5
export TB_SID=tibero
export PATH=.:$TB_HOME/bin:$TB_HOME/client/bin:/data/php/php5/bin:$PATH
export LD_LIBRARY_PATH=$TB_HOME/lib:$TB_HOME/client/libpublic@php:/data/php $ cd $TB_HOME
public@php:/data/php/tibero5/config $ gen_tip.sh
Using TB_SID "tibero"
/data/php/tibero5/config/tibero.tip generated
/data/php/tibero5/config/psm_commands generated
/data/php/tibero5/client/config/tbdsn.tbr generated.
Running client/config/gen_esql_cfg.sh
Done.
public@php:/data/php $ cd $TB_HOME/client/config
public@php:/data/php/tibero5/client/config $ cat tbdsn.tbr
#-------------------------------------------------
# /data/php/tibero5/client/config/tbdsn.tbr
# Network Configuration File.
# Generated by gen_tip.sh at 2025. 04. 09. (Wed) 17:03:13 KST
tibero=(
(INSTANCE=(HOST=192.168.51.162)
(PORT=8629)
(DB_NAME=pub1)
)
) public@php:/data/php $ cd $ORACLE_HOME/sdk/include
public@php:/data/php/instantclient_10_2/sdk/include $ ls -tlr
total 1464
-r--r--r-- 1 php dba 19099 Apr 20 2010 odci.h
-r--r--r-- 1 php dba 4351 Apr 20 2010 ocixmldb.h
-r-xr-xr-x 1 php dba 6638 Apr 20 2010 ocikpr.h
-r--r--r-- 1 php dba 8954 Apr 20 2010 ociextp.h
-r--r--r-- 1 php dba 11331 Apr 20 2010 ocidfn.h
-r-xr-xr-x 1 php dba 4014 Apr 20 2010 ocidem.h
-r--r--r-- 1 php dba 43225 Apr 20 2010 ocidef.h
-r-xr-xr-x 1 php dba 6055 Apr 20 2010 ociapr.h
-r--r--r-- 1 php dba 411221 Apr 20 2010 ociap.h
-r--r--r-- 1 php dba 10361 Apr 20 2010 oci8dp.h
-r-xr-xr-x 1 php dba 7155 Apr 20 2010 oci1.h
-r--r--r-- 1 php dba 153066 Apr 20 2010 oci.h
-r--r--r-- 1 php dba 29307 Apr 20 2010 occiObjects.h
-r--r--r-- 1 php dba 35218 Apr 20 2010 occiData.h
-r--r--r-- 1 php dba 73063 Apr 20 2010 occiControl.h
-r--r--r-- 1 php dba 38724 Apr 20 2010 occiCommon.h
-r--r--r-- 1 php dba 11600 Apr 20 2010 occiAQ.h
-r--r--r-- 1 php dba 2115 Apr 20 2010 occi.h
-r-xr-xr-x 1 php dba 9520 Apr 20 2010 xa.h
-r--r--r-- 1 php dba 116591 Apr 20 2010 ort.h
-r--r--r-- 1 php dba 42626 Apr 20 2010 oro.h
-r--r--r-- 1 php dba 157674 Apr 20 2010 orl.h
-r--r--r-- 1 php dba 15031 Apr 20 2010 orid.h
-r--r--r-- 1 php dba 102726 Apr 20 2010 ori.h
-r-xr-xr-x 1 php dba 6605 Apr 20 2010 oratypes.h
-r--r--r-- 1 php dba 85310 Apr 20 2010 nzt.h
-r--r--r-- 1 php dba 33230 Apr 20 2010 nzerror.h
public@php:/data/php/instantclient_10_2/sdk/include $ cp oci* $TB_HOME/client/include/
6. Library Setup
public@php:/data/php $ cd $TB_HOME/client/lib
public@php:/data/php/tibero5/client/lib $ ln -s libtboci.so libclntsh.so.10.1
public@php:/data/php/tibero5/client/lib $ ln -s libclntsh.so.10.1 libclntsh.so
public@php:/data/php/tibero5/client/lib $
ln -s /data/php/instantclient_10_2/libnnz10.so libnnz10.so
public@php:/data/php/tibero5/client/lib $ ls -tlr
total 122736
โฆ omitted โฆ
drwxr-xr-x 2 php dba 4096 Mar 9 16:55 jar
drwxr-xr-x 2 php dba 27 Mar 9 16:55 php
lrwxrwxrwx 1 php dba 11 Mar 9 17:12 libclntsh.so.10.1 - libtboci.so
lrwxrwxrwx 1 php dba 17 Mar 9 17:12 libclntsh.so - libclntsh.so.10.1
lrwxrwxrwx 1 php dba 40 Mar 9 17:12 libnnz10.so - /data/php/instantclient_10_2/libnnz10.so
public@php:/data/php/tibero5/client/lib $
7. Install and Configure PHP OCI
public@php:/data/php $ tar -xvf oci8-2.0.8.tar
public@php:/data/php $ cd oci8-2.0.8
public@php:/data/php/oci8-2.0.8 $ phpize
Configuring for:
PHP Api Version: 20131106
Zend Module Api No: 20131226
Zend Extension Api No: 220131226
public@php:/data/php/oci8-2.0.8 $
public@php:/data/php/oci8-2.0.8 $
./configure --with-oci8=shared,instantclient,$TB_HOME/client/lib
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
โฆ omitted โฆ
appending configuration tag "CXX" to libtool
configure: creating ./config.status
config.status: creating config.h
public@php:/data/php/oci8-2.0.8 $
public@php:/data/php/oci8-2.0.8 $ make all install
โฆ omitted โฆ
Installing shared extensions: /data/php/php5/lib/php/extensions/no-debug-non-zts-20131226/
public@php:/data/php/oci8-2.0.8 $
public@php:/data/php/oci8-2.0.8 $ php --ini
Configuration File (php.ini) Path: /data/php/php5/lib
Loaded Configuration File: (none)
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)
public@php:/data/php/oci8-2.0.8 $
public@php:/data/php/php5/lib $ vi php.ini
extension=oci8.so
public@php:/data/php/php5/lib $
public@php:/data/php/php5/lib $ php --ini
Configuration File (php.ini) Path: /data/php/php5/lib
Loaded Configuration File: /data/php/php5/lib/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)
8. Verify Installation
public@php:/data/php/php5/lib $ php -r "oci_connect();"
Warning: oci_connect() expects at least 2 parameters, 0 given in Command line code on line 1
public@php:/data/php/php5/lib $ php -i | grep oci
oci8
oci8.default_prefetch = 100 = 100
oci8.events = Off = Off
oci8.max_persistent = -1 = -1
oci8.old_oci_close_semantics = Off = Off
oci8.persistent_timeout = -1 = -1
oci8.ping_interval = 60 = 60
oci8.privileged_connect = Off = Off
oci8.statement_cache_size = 20 = 20
OLDPWD = /data/php/oci8-2.0.8
_SERVER["OLDPWD"] = /data/php/oci8-2.0.8
_ENV["OLDPWD"] = /data/php/oci8-2.0.8
public@php:/data/php/php5/lib $ php -m | grep oci
oci8
public@php:/data/php/php5/lib $
Test
<?php
// 1. DB Connection
$user = "tibero";
$password = "tmax";
$conn = oci_connect($user,$password,'tibero');
if($conn)
{
echo "Connection succes\n";
}
else
{
echo "Connection failed\n";
echo oci_error();
exit(1);
}
// 2. Execute Statement
$st1 = "select instance_name i, db_name d, status s from v\$instance";
$stmt = oci_parse($conn, $st1);
$exec = oci_execute($stmt);
while ($rs = oci_fetch_array($stmt)) {
printf(" %s", $rs['I']);
printf(" %s", $rs['D']);
printf(" %s", $rs['S']);
printf("\n");
}
oci_free_statement($stmt);
oci_close($conn);
echo "Finish\n";
?>
public@php:/data/php/php5/work $ php sample1.php
Connection succes
pub1 pub1 NORMAL
Finish
public@php:/data/php/php5/work