在 CentOS 6 安裝、設定 Oracel PDO_OCI

下載檔案

Oracle Instant Client

oci8

http://pecl.php.net/package/oci8

PDO_OCI

https://pecl.php.net/package/pdo_oci

安裝套件

先安裝編譯套件

1
yum --enablerepo=remi-php56 install php-devel

or

1
yum install php-devel

Oracle Instant Client

安裝

1
2
rpm -ivh oracle-instantclient11.2-basic-11.2.0.4.0-1.i386.rpm
rpm -ivh oracle-instantclient11.2-devel-11.2.0.4.0-1.i386.rpm

確認

1
rpm -qa | grep oracle

配置

1
vi /etc/ld.so.conf

最後一行加上

1
/usr/lib/oracle/11.2/client/lib/

如為 64bit 版本的則改為 client64,以下全都是

64bit 版本需再設定 link

1
2
ln -s /usr/lib/oracle/11.2/client64 /usr/lib/oracle/11.2/client
ln -s /usr/include/oracle/11.2/client64 /usr/include/oracle/11.2/client

環境變數

1
vi /etc/profile

最後加入

1
2
3
export ORACLE_HOME=/usr/lib/oracle/11.2/client/
export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client:$LD_LIBRARY_PATH
export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"

讀取設定

1
source /etc/profile

oci8

先安裝 DTRACE

1
yum install systemtap-sdt-devel
1
vi /etc/profile

最後一行加上

1
export PHP_DTRACE=yes

讀取設定

1
source /etc/profile

編譯安裝

1
2
3
4
5
6
tar -zxvf oci8-2.0.12.tgz
cd oci8-2.0.12
phpize
./configure --with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client/lib
make
make install
1
Installing shared extensions: /usr/lib/php/modules/

配置

建立 ini

1
vi /etc/php.d/20-oci8.ini

加入

1
extension=oci8.so

存檔,查詢

1
php -i | grep oci8

PDO_OCI

修改 source code

1
2
tar -zxvf PDO_OCI-1.0.tgz
cd PDO_OCI-1.0

修改 config.m4

1
vi config.m4

第 10~11 行

1
2
elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.10.1; then
PDO_OCI_VERSION=10.1

復制改為 11.2

1
2
elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.11.2; then
PDO_OCI_VERSION=11.2

第 121~123 行

1
2
3
10.2)
PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD)
;;

復制改為 11.2

1
2
3
11.2)
PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD)
;;

存檔

修改 pdo_oci.c

1
vi pdo_oci.c

第 34~36 行

1
2
3
function_entry pdo_oci_functions[] = {
{NULL, NULL, NULL}
}

改為

1
2
3
zend_function_entry pdo_oci_functions[] = {
{NULL, NULL, NULL}
}

編譯安裝

1
2
3
4
phpize
./configure --with-pdo-oci=instantclient,/usr,11.2
make
make install
1
Installing shared extensions: /usr/lib/php/modules/

配置

建立 ini

1
vi /etc/php.d/30-pdo_oci.ini

加入

1
extension=pdo_oci.so

存檔,查詢

1
php -i | grep oci