Linux下利用instantclient實現PHP遠程鏈接Oracle

1、安裝instantclientphp

直接解壓、並設置好環境變量便可,具體可參考之前的一篇博文:html

http://blog.sina.com.cn/s/blog_54dd80920101d8mf.html數據庫

  特別要在安裝目錄創建如下符號鏈接:(在不然編譯oci8模塊通不過)apache

sudo ln -s libclntsh.so.11.1 libclntsh.so測試

sudo ln -s libocci.so.11.1 libocci.sofetch

2、裝oci8擴展編碼

一、去http://pecl.php.net/package/oci8 下載最新源代碼spa

二、解壓tar xzvf oci8-2.0.8.tgz.net

三、cd oci8-2.0.8/ 並執行/opt/php/bin/phpizedebug

四、./configure --with-oci8=shared,instantclient,/opt/ora11g/instantclient_11_2

五、make

六、sudo make install 這時oci8擴展模塊已經安裝到PHP中了,個人模塊路徑:/opt/php/lib/php/extensions/no-debug-zts-20121212/oci8.so

七、 修改/opt/php/lib/php.ini加入extension=oci8.so;

    也能夠是全路徑:extension=/opt/php/lib/php/extensions/no-debug-zts-20121212/oci8.so;

3、Restart Apache. 

sudo service apachectl restart

4、測試

<?php
header("Content-Type: text/html;charset=utf-8");
$dbconn =  oci_connect('scott','tiger',"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.110)(PORT = 1521))(CONNECT_DATA =(SID=orcl)))");

if ($dbconn) {
    echo '鏈接成功';
}else {
    echo '鏈接失敗';
}

//查詢
$oci_rs = oci_parse($dbconn,'SELECT * FROM user_tables');  //預處理SQL
oci_execute($oci_rs); //執行SQL
while ($row = oci_fetch_array($oci_rs,OCI_ASSOC)) {
    print_r($row);
}//處理結果

?>


5、中文亂碼問題

PHP頁面中文問題:

header("Content-Type: text/html;charset=utf-8");

數據庫編碼致使中文問題:把oci_connect('scott','tiger',"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.110)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME = orcl)))");改成oci_connect('scott','tiger',"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.110)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME = orcl)))",'utf8');


6、裝PDO擴展

一、進入PHP源碼目錄

二、cd ext/pdo_oci

三、執行/opt/php/bin/phpize

四、 ./configure --with-php-config=/opt/php/bin/php-config --with-pdo-oci=instantclient,/opt/ora11g/instantclient_11_2,11.2.0.4.0

五、make

六、sudo make install 這時pdo_oci.so擴展模塊已經安裝到PHP中了,個人模塊路徑:/opt/php/lib/php/extensions/no-debug-zts-20121212/pdo_oci.so

七、 修改/opt/php/lib/php.ini加入extension=pdo_oci.so;

相關文章
相關標籤/搜索