linux下php串連oracle教程

來源:互聯網
上載者:User

標籤:

安裝篇


首先,PHP支援oracle我首先想到的是pdo相關驅動,看了一下還真有,叫做pdo_oci。


但還依賴 oracle instant client ,這個要到oracle官網下載:

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


選擇對應系統的版本,點擊進去,這裡我的是64位linux,所以選擇 Instant Client for Linux x86-64 ,之後會讓你同意一個協議,叫做  Accept License Agreement ,勾選後就可以下載了。


值得一提的是,如果要通過wget方式下載,你需要註冊一個oracle帳號並登陸,然後先在自己電腦上點擊下載,得到一個實際url(包含一個token),複製這個url去伺服器上wget,直接wget網頁裡的url是下不了的,切記。


需要下載兩個包:

oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm

oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm


版本號碼可能不一樣,看下關鍵詞:basic 和 devel即可。


這兩個包下載到伺服器上,分別安裝:

rpm -ivh oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpmrpm -ivh oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm


因為是64位系統,為了防止編譯php擴充出問題,將剛剛安裝好的兩個目錄做個軟串連

ln -s /usr/lib/oracle/12.1/client64 /usr/lib/oracle/12.1/clientln -s /usr/include/oracle/12.1/client64 /usr/include/oracle/12.1/client

ok,下一步就開始安裝 pdo_oci擴充。


首先你應該有一份php源碼,如果沒有,請到官網下載一份對應版本的。

假設我的源碼在 /home/src/php56

cd /home/src/php56cd ext/pdo_ociphpize #注釋:如果沒有這個命令你需要找到php安裝目錄的bin/,如/usr/local/php/bin/phpize./configure --with-pdo-oci=instantclient,/usr,12.1 --with-php-config=/usr/bin/php-config#註:12.1需要對應上面安裝的oracle instant的版本號碼,和oracle/12.1的數字一樣,--with-php-config是和phpize同理,在php安裝目錄裡的bin目錄下,這兩個要改成自己實際情況的。make && make install

如果順利的話,編譯成功後,修改 php.ini ,在檔案末尾空兩行,加上

extension=pdo_oci.so;

好了,通過

php -m

命令看一下有沒有PDO_OCI這一行,有的話就是ok了。

web服務記得要重啟apache或php-fpm。


使用篇

使用過程跟pdo差不多,我對oracle還不是很瞭解,但是也遇到一個故障,那就是無法串連oracle。

一開始通過下面的方式串連:

$pdh = new PDO(‘oci:dbname=IP地址:連接埠號碼/SID‘,使用者名稱,密碼);

報錯:

SQLSTATE[HY000]: pdo_oci_handle_factory: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

後來在statckoverflow上找到辦法,改成下面這種串連方式:

$tns = "  (DESCRIPTION =    (ADDRESS_LIST =      (ADDRESS = (PROTOCOL = TCP)(HOST = 你的IP)(PORT = 連接埠號碼))    )    (CONNECT_DATA =      (SID = 你的oracle資料庫的SID)    )  )       ";$db_username = "youname";$db_password = "yourpassword";try{    $conn = new PDO("oci:dbname=".$tns,$db_username,$db_password);}catch(PDOException $e){    echo ($e->getMessage());}

這樣就沒問題了。



linux下php串連oracle教程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.