
標(biāo)題: [教程] linux+apache+php連接oracle數(shù)據(jù)庫 [打印本頁]
作者: marquis 時(shí)間: 2014-3-26 21:51 標(biāo)題: linux+apache+php連接oracle數(shù)據(jù)庫
好久沒回到這里發(fā)帖了,還是那樣熟悉的感覺。
相信大家在linux下用mysql的居多吧,其實(shí)在linux下php也能做到訪問oracle,由于項(xiàng)目需要,我需要訪問到遠(yuǎn)程的oracle數(shù)據(jù)庫,
廢話不多說直接說配置流程,這個(gè)方法遠(yuǎn)程連接和連接本地oracle數(shù)據(jù)庫都有效
一.準(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ù)制代碼
安裝好查看有沒有安裝成功
- 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ù)制代碼
然后用以下語句使其立即生效
四.安裝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ù)庫時(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ù)庫成功,但查詢時(shí)出現(xiàn)數(shù)據(jù)亂碼
當(dāng)遠(yuǎn)程連接oracel是oci_connect的第四個(gè)參數(shù)為charset
OCI_connect('','','','zhs16gbk');
此方法覺得有效,不管你怎么改php、linux系統(tǒng)編碼都解決不了。親測(cè)。
以上都是自己在配置時(shí)的流程,親測(cè)有效,遇到的這三個(gè)問題也是可以解決的。
歡迎光臨 WDlinux官方論壇 (http://cd-genova.com/bbs/) |
Powered by Discuz! 7.2 |