好久沒(méi)回到這里發(fā)帖了,還是那樣熟悉的感覺(jué)。
相信大家在linux下用mysql的居多吧,其實(shí)在linux下php也能做到訪問(wèn)oracle,由于項(xiàng)目需要,我需要訪問(wèn)到遠(yuǎn)程的oracle數(shù)據(jù)庫(kù),
廢話不多說(shuō)直接說(shuō)配置流程,這個(gè)方法遠(yuǎn)程連接和連接本地oracle數(shù)據(jù)庫(kù)都有效
一.準(zhǔn)備工作
需要增加相關(guān)的擴(kuò)展,安裝oracle客戶端、PDO_oci擴(kuò)展、oci8擴(kuò)展
二.文件下載
(1)oracle客戶端rpm包下載地址
http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
下載如下兩個(gè)文件(下載文件需注冊(cè)哦、wget命令就能下載):
oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm
oracle-instantclient11.2-devel-11.2.0.3.0-1.x86_64.rpm
(2)PDO_oci擴(kuò)展、oci8擴(kuò)展下載
直接下載 http://pecl.php.net/package/PDO_OCI (PDO_oci)
http://pecl.php.net/package/oci8 (oci8)
三.安裝及配置oracle客戶端
- #rpm -ivh oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm
- #rpm -ivh oracle-instantclient11.2-devel-11.2.0.3.0-1.x86_64.rpm
復(fù)制代碼
安裝好查看有沒(méi)有安裝成功
- rpm -qa | grep oracle 查看oracle是否安裝
復(fù)制代碼
2.配置
修改/etc/ld.so.conf 或在ld.so.conf.d文件夾下添加oracle-x86_64.conf文件,寫入安裝oracle客戶端的lib路徑: - #vi /etc/ld.so.conf
- /usr/lib/oracle/11.2/client64/lib/ //加入此行,保存退出
復(fù)制代碼
64位系統(tǒng)需要?jiǎng)?chuàng)建32位的軟鏈接
- ln -s /usr/lib/oracle/11.2/client64 /usr/lib/oracle/11.2/client
- ln -s /usr/include/oracle/11.2/client64 /usr/include/oracle/11.2/client
復(fù)制代碼
定義環(huán)境變量
- export ORACLE_HOME=/usr/lib/oracle/11.2/client64/
- export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64:$LD_LIBRARY_PATH
- export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
復(fù)制代碼
然后用以下語(yǔ)句使其立即生效
四.安裝pdo_oci模塊
- ln -s /usr/include/oracle/11.2 /usr/include/oracle/10.2.0.1
- ln -s /usr/lib/oracle/11.2 /usr/lib/oracle/10.2.0.1
復(fù)制代碼
2.安裝
進(jìn)入對(duì)應(yīng)的擴(kuò)展文件夾,例如/php/ext/php_oci 然后開始安裝 - #phpize
- # ./configure --with-php-config=php-config --with-pdo-oci=instantclient,/usr,10.2.0.1
- #make && make install
- #ll /usr/lib64/php/modules/
復(fù)制代碼
可看到php_oci.so已在文件夾中
3.配置 有兩種方法,其一,直接在php.ini中打開擴(kuò)展,其二,在php.d文件夾中添加對(duì)應(yīng)的ini文件及內(nèi)容 - #vi /etc/php.ini
- 加入此行
- extension=pdo_oci.so
復(fù)制代碼
五.安裝oci8模塊 1.安裝 進(jìn)入對(duì)應(yīng)的擴(kuò)展文件夾,開始安裝 - phpize
- #./configure --with-php-config=php-config --with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client/lib
- #make && make install
- #ll /usr/lib64/php/modules
復(fù)制代碼
可看到oci8.so已在文件夾中 2.配置 有兩種方法,其一,直接在php.ini中打開擴(kuò)展,其二,在php.d文件夾中添加對(duì)應(yīng)的ini文件及內(nèi)容 - #vi /etc/php.ini
- 加入此行
- extension=oci8.so
復(fù)制代碼
最后重啟apache即可。phpinfo()可看到,php_oci及oci8擴(kuò)展均已成功開啟
可能發(fā)生的錯(cuò)誤 1.在驗(yàn)證是否能連接數(shù)據(jù)庫(kù)時(shí),可能會(huì)提示缺少libaio.so 安裝libaio.so方法 yum install libaio。 2.lnmp連接oracle出現(xiàn)ORA-24408錯(cuò)誤處理: 錯(cuò)誤代碼:ORA-24408: could not generate unique server group name 一般連接外部oracle服務(wù)器那一步驟時(shí),可能會(huì)出現(xiàn)ORA-24408:could not generate unique server group name這樣的錯(cuò)誤,解決辦法是在hosts中將主機(jī)名添加即可: vi /etc/hosts 127.0.0.1 localhostlocalhost.localdomain localhost4 localhost4.localdomain4 test ::1 localhost localhost.localdomainlocalhost6 localhost6.localdomain6 test 上面的代碼中,test即為主機(jī)名。然后重啟網(wǎng)絡(luò)服務(wù)即可。service network restart 3.連接數(shù)據(jù)庫(kù)成功,但查詢時(shí)出現(xiàn)數(shù)據(jù)亂碼 當(dāng)遠(yuǎn)程連接oracel是oci_connect的第四個(gè)參數(shù)為charset OCI_connect('','','','zhs16gbk'); 此方法覺(jué)得有效,不管你怎么改php、linux系統(tǒng)編碼都解決不了。親測(cè)。
以上都是自己在配置時(shí)的流程,親測(cè)有效,遇到的這三個(gè)問(wèn)題也是可以解決的。
|