Linux下php5.3編譯oracle客戶端

@天行健中國元素發表於2013-10-17

因專案需要在linux下進行php5.3的oracle客戶端編譯,簡要介紹一下步驟及走過的彎路。

1.下載Oracle客戶端程式包,其中包含OCI、OCCI和JDBC-OCI等相關檔案。

1.1下載檔案地址

http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

根據作業系統的版本選擇對應的軟體,我需要的是X86_64選擇

Instant Client for Linux x86-64

1.2需要下載的檔案如下:

oracle-instantclient11.1-basic-11.1.0.7.0-1.x86_64.rpm

oracle-instantclient11.1-devel-11.1.0.7.0-1.x86_64.rpm

oracle-instantclient11.1-sqlplus-11.1.0.7.0-1.x86_64.rpm

需要強調的一點是這裡需要註冊一個oracle的賬戶才能正常下載。

2.安裝Oracle客戶端程式包。

將程式包上傳到伺服器指定目錄裡

chmod +x *.rpm

#給RPM包賦執行許可權
rpm -ivh oracle-instantclient11.1-basic-11.1.0.7.0-1.x86_64.rpm oracle-instantclient11.1-devel-11.1.0.7.0-1.x86_64.rpm oracle-instantclient11.1-sqlplus-11.1.0.7.0-1.x86_64.rpm

#安裝RPM包
echo "/usr/lib/oracle/11.1/client64/lib/" > /etc/ld.so.conf.d/oracle_client.conf

#將庫路徑加到預設載入中
/sbin/ldconfig

#重新載入動態連結庫

3.安裝OCI8的php擴充套件(這裡指定php的安裝路徑為/usr/local/webserver/php)

yum install libaio

#yum安裝libaio庫,libaio是Linux下的一個非同步非阻塞介面,它提供了以非同步非阻塞方式來讀寫檔案的方式,讀寫效率比較高

wget http://pecl.php.net/get/oci8-1.4.10.tgz

#下載OCI擴充套件

tar zxvf oci8-1.4.10.tgz

#解壓

cd oci8-1.4.10
/usr/local/webserver/php/bin/phpize CFLAGS="-I/usr/lib/oracle/11.1/client64" CXXFLAGS="-I/usr/lib/oracle/11.1/client64"

#使用phpize準備 PHP 外掛模組的編譯環境,會根據指定的環境變數生成編譯時需要的makefile,phpize是屬於php-devel的內容,所以centos下只要執行yum install php-devel進行安裝即可

./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-oci8=/usr/lib/oracle/11.1/client64
make
make install

#編譯,安裝

需要強調的是make的時候會報錯,顯示各種找不到庫檔案,需要對makefile檔案進行修改加入oralce的執行庫地址

開啟makefile,尋找INCLUDE,形式如下:

INCLUDES = -I/usr/local/php/include/php -I/usr/include/oracle/10.2.0.3/client

然後在末尾加上="-I/usr/lib/oracle/11.1/client64,然後重新make就會成功了。

4.修改PHP.ini(/usr/local/webserver/php/etc/php.ini)

在extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/"後增加一行:

extension = "oci8.so"

5.重啟apache讓OCI生效

6.在web目錄下建立phpinfo.php檔案在其中輸入一下內容,並通過web訪問

<?php

phpinfo();

?>

如果找到OCI8的部分就說明OCI安裝正常了,如下圖所示

image

接下來就能通過php訪問oracle資料庫了,需要注意的是php下Oracle的連線字串

<?php

$username='***';
$passwd='***';
$protocol='TCP';
$SERVICE_NAME='***';
$ORACLE_SERVER_IP_ADDRESS='***.***.***.***';
$Port='1521';

$db = "(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = $protocol)(HOST = $ORACLE_SERVER_IP_ADDRESS)(PORT = $Port)))(CONNECT_DATA=(SID=$SERVICE_NAME)))";
$conn = oci_connect($username,$passwd, $db);
PutEnv("NLS_LANG=SIMPLIFIED CHINESE_CHINA.AL32UTF8");
if (!$conn) {

    $e = oci_error();
    print htmlentities($e['message']);
    exit;
}else {
    echo "連線oracle成功!";
    return $conn;
}

?>

 

作者: 付海軍
出處:http://fuhj02.cnblogs.com
版權:本文版權歸作者和部落格園共有
轉載:歡迎轉載,為了儲存作者的創作熱情,請按要求【轉載】,謝謝
要求:未經作者同意,必須保留此段宣告;必須在文章中給出原文連線且保證內容完整!否則必究法律責任!
個人網站: http://www.fuhaijun.com/

相關文章