【Linux】CentOS 6.2 x86_64 上設定 PHP 連結 Oracle

首先要確定 CentOS 6.2 上的 SELinux 功能是否已開啟,在 CentOS5.x 之前 SELinux 安裝的預設值都是關閉的,當時可能 RedHat 認為大家對這東東還不熟......不過到現在我也還是對 SELinux 很陌生... :-P。
到了 CentOS 6 的安裝預設值就啟用 SELinux 了。

題外話,正巧在昨日(2012/01/12) 去聽了 RedHat 的產品研討會,會中就強調了 SELinux 對資安控管的重要性,所以也建議您將 SELinux 列入要學習研究的課題。

如果您到目前為止也和老灰鴨一樣對 SELinux 很不熟的話,那就先將它關閉吧。

vim /etc/sysconfig/selinux

將原設定 mark 起來,修改如下 ----

# SELINUX=enforcing
SELINUX=disabled

存檔後重開機.


建立一個目錄,用來暫放要安裝的檔案,我選擇建立 /tmp/oracle/

Oracle 官網下載 instant-client-basicinstant-client-devel 並存放於 /tmp/oracle/

上 php 官網 http://pecl.php.net/package/oci8 下載 oci8,目前版本為 oci8-1.4.7.tgz,並存放於 /tmp/oracle/


安裝 gcc

[root]# yum install gcc


安裝 php
因為懶,所以我選擇全裝 :-P

[root]# yum install php*


安裝 oracle-instantclient-basicoracle-instantclient-devel

yum    install    --nogpgcheck oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64    oracle-instantclient11.2-devel-11.2.0.3.0-1.x86_64


安裝 oci8

[root]# pecl    install    oci8-1.4.7.tgz



php 設定檔加入啟動 oci8 函式

做法有二:
一是直接寫在 php.ini 這個設定檔內, 另一做法是在 /etc/php.d/ 下建立一個 oci8.ini, 您也會看到在 /etc/php.d/ 下有一堆的 xxx.ini

二種做法都是寫入下面這行

extension=oci8.so


在網站目錄下寫 phpinfo() 驗證, 要看到如下圖才算是成功喔.

注意您要安裝的 oracle-instantclient 版本,以老灰鴨的公司為例,我們採用的是 Oracle9i,下載最新的 oracle-instantclient 11.2 版是不合用的,雖然在 phpinfo() 有顯示上面的 oci8 模組,但撈資料時都出現 ORA-24408 could not generate unique server group name 的錯誤(上面的圖就是當初安裝 11.2 時擷取的),要改安裝 10.2.0.5;所以若您全部步驟都做完了,仍無法連到 Oracle 撈資料,可能就是裝了不合用的版本,再下載安裝其他版本試試。