PHP516 用phpize增加擴充套件PDO_OCI和OCI8

jinqibingl發表於2015-02-13

環境:centos5.5、PHP5.1.6、oracle10.2.0.5 客戶端
1、從oracle官網下載oracle客戶端包
oracle-instantclient-basic-10.2.0.5-1.i386.rpm
oracle-instantclient-devel-10.2.0.5-1.i386.rpm
oracle-instantclient-sqlplus-10.2.0.5-1.i386.rpm
2、從官網下載PHP5.1.6的安裝包,要下有帶有原始碼的:php-5.1.6.tar.gz
3、安裝oracle客戶端
      rpm -ivh oracle-instantclient*
4、修改/etc/ld.so.conf檔案,新增:/usr/lib/oracle/10.2.0.5/client/lib/,這個需要和你自己的配置相關。
5、修改/etc/profile檔案,最後加入如下內容:
export ORACLE_HOME=/usr/lib/oracle/10.2.0.5/client/
export LD_LIBRARY_PATH=/usr/lib/oracle/10.2.0.5/client:$LD_LIBRARY_PATH
export NLS_LANG="AMERICAN_AMERICA.US7ASCII" //具體字符集,請檢視你的oracle服務端sql
儲存後,執行命令,使其起效:
source /etc/profile
6、安裝模組,要使用原始碼安裝方式,原始碼位置在php-5.1.6.tar.gz解壓縮出來的資料夾裡面的ext裡面。
7、安裝pdo_oci
1)進入資料夾


# cd php-5.1.6/ext/pdo_oci/
2) 用phpize來擴充套件,資料夾內執行: phpize


[root@jinniu-test3 pdo_oci]# phpize
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626
3) 編譯安裝


# ./configure --with-php-config=/usr/bin/php-config --with-pdo-oci=instantclient,/usr,10.2.0.5
# make && make install
這是靜態編譯方式,儘量使用這個方式來,如果不加後面--with-pdo-oci=instantclient,/usr,10.2.0.5,應該是動態方式,動態方式好像有時候會出錯,安裝之後,識別不到SO檔案。
8、安裝OCI8


基本一樣,進入php5.1.6/oci8/資料夾,phpize命令,編譯安裝


# ./configure --with-php-config=/usr/bin/php-config --with-oci8=instantclient,/usr,10.2.0.5


# make && make install
同樣要採用靜態編譯,要不然可能出錯。
9、到此基本安裝就算完成了,後面就是如何啟用的問題,我出問題,主要出在這裡。
PHP對模組的啟用,應該是有兩種方式,一是PHP.INI中增加,二是在/etc/php.d/資料夾下增加INI檔案。這兩種啟用的方式,具體是那個引數配置的,我不知道。
推薦辦法是,先確定安裝沒有出錯,全部是使用靜態編譯的辦法,然後現在PHP.INI檔案中,增加
extension=oci8.so
extension=pdo_oci.so
然後使用php -v命令來檢測配置檔案是否正確,如果出錯,表示無法載入,那麼可能要使用第二種配置方式:
在/etc/php.d/資料夾下增加特定的INI檔案。
啟用OCI8,增加oci8.ini,內容是extension=oci8.so。
啟用pdo_oci,增加pdo_oci.ini,內容是extension=pdo_oci.so。
然後再用php -v來檢測,如果沒有報錯,說明正確了,然後重啟HTTPD服務,service httpd restart 。
10、說明,OCI8和PDO_OCI這個編譯過程,是可以重複進行的,如果已經安裝了,沒有成功,可以直接進行再次安裝,不需要解除安裝過程,安裝過程會覆蓋之前安裝的檔案。
11、新建test.php:


$dbconn=OCILogon("system","manager","(DESCRIPTION=(ADDRESS=(PROTOCOL =TCP)(HOST=遠端資料庫IP地址)(PORT = 1521))(CONNECT_DATA =(SID=遠端資料庫全域性名)))"); 
if($dbconn!=false) 
{
echo "連線成功"; 
if(OCILogOff($dbconn)==true) 
    {
    echo "關閉連線成功!";
    } 

else 
{
echo "連線失敗"; 



?>
用瀏覽器開啟test.php,結果為連線成功關閉連線成功!。說明連線oracle成功。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9606200/viewspace-1435659/,如需轉載,請註明出處,否則將追究法律責任。

相關文章