标题: [教程] linux+apache+php连接oracle数据库 [打印本页]
作者: marquis 时间: 2014-3-26 21:51 标题: linux+apache+php连接oracle数据库
好久没回到这里发帖了,还是那样熟悉的感觉。
相信大家在linux下用mysql的居多吧,其实在linux下php也能做到访问oracle,由于项目需要,我需要访问到远程的oracle数据库,
废话不多说直接说配置流程,这个方法远程连接和连接本地oracle数据库都有效
一.准备工作
需要增加相关的扩展,安装oracle客户端、PDO_oci扩展、oci8扩展
二.文件下载
(1)oracle客户端rpm包下载地址
http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
下载如下两个文件(下载文件需注册哦、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扩展、oci8扩展下载
直接下载 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
复制代码
安装好查看有没有安装成功
- rpm -qa | grep oracle 查看oracle是否安装
复制代码
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/ //加入此行,保存退出
复制代码
64位系统需要创建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
复制代码
定义环境变量
- 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"
复制代码
然后用以下语句使其立即生效
四.安装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
复制代码
2.安装
进入对应的扩展文件夹,例如/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/
复制代码
可看到php_oci.so已在文件夹中
3.配置
有两种方法,其一,直接在php.ini中打开扩展,其二,在php.d文件夹中添加对应的ini文件及内容
- #vi /etc/php.ini
- 加入此行
- extension=pdo_oci.so
复制代码
五.安装oci8模块
1.安装
进入对应的扩展文件夹,开始安装
- 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
复制代码
可看到oci8.so已在文件夹中
2.配置
有两种方法,其一,直接在php.ini中打开扩展,其二,在php.d文件夹中添加对应的ini文件及内容
- #vi /etc/php.ini
- 加入此行
- extension=oci8.so
复制代码
最后重启apache即可。phpinfo()可看到,php_oci及oci8扩展均已成功开启
可能发生的错误
1.在验证是否能连接数据库时,可能会提示缺少libaio.so
安装libaio.so方法 yum install libaio。
2.lnmp连接oracle出现ORA-24408错误处理:
错误代码:ORA-24408: could not generate unique server group name
一般连接外部oracle服务器那一步骤时,可能会出现ORA-24408:could not generate unique server group name这样的错误,解决办法是在hosts中将主机名添加即可:
vi /etc/hosts
127.0.0.1 localhostlocalhost.localdomain localhost4 localhost4.localdomain4 test
::1 localhost localhost.localdomainlocalhost6 localhost6.localdomain6 test
上面的代码中,test即为主机名。然后重启网络服务即可。service network restart
3.连接数据库成功,但查询时出现数据乱码
当远程连接oracel是oci_connect的第四个参数为charset
OCI_connect('','','','zhs16gbk');
此方法觉得有效,不管你怎么改php、linux系统编码都解决不了。亲测。
以上都是自己在配置时的流程,亲测有效,遇到的这三个问题也是可以解决的。
欢迎光临 WDlinux官方论坛 (http://wdlinux.cn/bbs/) |
Powered by Discuz! 7.2 |