php如何利用PDO訪問oracle資料庫的方法詳解

來源:互聯網
上載者:User
POD擴充是在PHP5中加入,該擴充提供PHP內建類 PDO來對資料庫進行訪問,不同資料庫使用相同的方法名,解決資料庫連接不統一的問題。下面這篇文章主要給大家介紹了關於PHP使用PDO訪問oracle資料庫的步驟,需要的朋友可以參考下。

前言

PDO 從一開始就吸取了現有資料庫擴充成功和失敗的經驗教訓。因為 PDO 的代碼是全新的,所以我們有機會重新開始設計效能,以利用 PHP 5 的最新特性。

PDO 旨在將常見的資料庫功能作為基礎提供,同時提供對於 RDBMS 獨特功能的方便訪問。

雖然LAMP中PHP和Mysql是標準配對,但是公司的項目是Mysql和Oracle分別作為運行庫和詳單庫的,所以PHP串連oracle資料庫也是必須要實現的。本篇文章就介紹下如果通過PDO串連到oracle資料庫,下面話不多說了,來一起看看詳細的介紹吧。

開發環境

同樣先說明下我使用到的環境:

  • RedHat(CentOS)6.7

  • PHP5.6

  • Oracle11g

php5.6的搭建可以參照這裡;

Oracle在linux環境下的安裝可以參考這裡

當然,你也可以不安裝整個oracle,而只安裝instant client來實現;如果是instant client的oracle串連步驟參見本篇博文最後的致謝部分。

在開始下面的步驟前,請務必確保以上的3個環境都正確配置可用。

安裝PDO_OCI

如果你是安裝的php5.6.31版本,似乎pdo_oci模組已經內建了;但是穩妥起見,我們重新安裝一遍。

下載並解壓縮


$ wget https://pecl.php.net/get/PDO_OCI-1.0.tgz$ tar -xvf PDO_OCI-1.0.tgz$ cd PDO_OCI-1.0

修改設定檔

更新目錄中的config.m4檔案,使其適配Oracle11g


# 在第10行左右找到與下面類似的代碼,添加這兩行:elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.11.2; then PDO_OCI_VERSION=11.2# 在第101行左右添加這幾行:11.2) PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD) ;;

編譯

在目前的目錄下執行


$ phpize

phpize類似於gcc命令,主要是用來產生php的外掛模組。phpize是依賴於php-deval模組的,如果命令無法執行,請自行利用yum安裝php-deval;

你可以通過下面的命令檢查下是否已經安裝:


$ rpm -qa | grep php

查看是否有php56w-deval-5.6.xxx,如果沒有,請yum install php56w-deval來安裝。

安裝

phpize命令執行之後,會在目錄下產生很多檔案,其中包括configure等我們常見的linux下通過源碼安裝應用的標準檔案,依次執行下面的命令:


$ ./configure$ make && make install

這裡一般會遇到一個問題,在make的時候會提示在pdo_oci.c檔案中:


pdo_oci.c:34: error: expected ‘=', ‘,', ‘;', ‘asm' or ‘attribute' before ‘pdo_oci_functions'

解決辦法是修改pdo_oci.c檔案的第34行,把function_entry修改成zend_function_entry,儲存後重新make就可以了。

建立ini檔案

成功之後,會提示已經在/usr/lib64/php/modules目錄下產生了pdo_oci.so模組,我們要做的就是告訴php,我們要引用這個模組。

在/etc/php.d目錄下建立一個ini檔案:pdo_oci.ini,內容:


extension=pdo_oci.so

到這裡,pdo_oci模組就安裝完成了,我們可以通過php -m | grep oci來查看。

安裝OCI8

接下來就是安裝oci8模組。

下載並解壓縮

依次在命令列中執行下面的命令:


$ wget https://pecl.php.net/get/oci8-2.0.8.tgz$ tar -xvf oci8-2.0.8.tgz$ cd oci8-2.0.8

編譯和安裝

步驟和上面pdo_oci是類似的:


$ phpize$ ./configure --with-oci8=shared$ make && make install

建立ini檔案

同樣的,我們在/etc/php.d目錄下建立oci8.ini,內容:


extension=oci8.so

重啟Apache

別忘記重啟一下apache伺服器來重新載入php的模組:


$ service httpd restart

我們可以通過在網站目錄下建立一個test.php檔案,檔案中的內容是:


<?phpphpinfo();

然後我們到頁面中去查看下列印出來的phpinfo資訊,查看其中的pdo, pdo_oci和oci8模組的相關資訊。

總結

參考&致謝

php5.3串連oracle的用戶端及pdo_oci模組安裝

Installing PDO_OCI and OCI8 PHP extensions on CentOS 6.4 64bit

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.