Board logo

标题: [教程] 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客户端
  1. #rpm -ivh oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm
  2. #rpm -ivh oracle-instantclient11.2-devel-11.2.0.3.0-1.x86_64.rpm
复制代码



安装好查看有没有安装成功
  1. rpm -qa | grep oracle                                                   查看oracle是否安装
复制代码



2.配置

       修改/etc/ld.so.conf  或在ld.so.conf.d文件夹下添加oracle-x86_64.conf文件,写入安装oracle客户端的lib路径:

  1. #vi /etc/ld.so.conf
  2. /usr/lib/oracle/11.2/client64/lib/     //加入此行,保存退出
复制代码



  64位系统需要创建32位的软链接
  1. ln -s /usr/lib/oracle/11.2/client64 /usr/lib/oracle/11.2/client
  2. ln -s /usr/include/oracle/11.2/client64 /usr/include/oracle/11.2/client
复制代码




定义环境变量
  1. vi etc/profile
复制代码

  1. export ORACLE_HOME=/usr/lib/oracle/11.2/client64/
  2.    export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64:$LD_LIBRARY_PATH
  3.    export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
复制代码




然后用以下语句使其立即生效
  1. #source /etc/profile
复制代码




四.安装pdo_oci模块
  1. ln -s /usr/include/oracle/11.2 /usr/include/oracle/10.2.0.1
  2. ln -s /usr/lib/oracle/11.2 /usr/lib/oracle/10.2.0.1
复制代码


2.安装

       进入对应的扩展文件夹,例如/php/ext/php_oci

       然后开始安装

  1. #phpize
  2. # ./configure --with-php-config=php-config --with-pdo-oci=instantclient,/usr,10.2.0.1
  3. #make && make install
  4. #ll /usr/lib64/php/modules/
复制代码


可看到php_oci.so已在文件夹中


      3.配置

       有两种方法,其一,直接在php.ini中打开扩展,其二,在php.d文件夹中添加对应的ini文件及内容

  1. #vi /etc/php.ini
  2. 加入此行
  3. extension=pdo_oci.so
复制代码


五.安装oci8模块

  1.安装

      进入对应的扩展文件夹,开始安装

  1. phpize
  2. #./configure --with-php-config=php-config --with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client/lib
  3. #make && make install
  4. #ll /usr/lib64/php/modules
复制代码


可看到oci8.so已在文件夹中

      2.配置

      有两种方法,其一,直接在php.ini中打开扩展,其二,在php.d文件夹中添加对应的ini文件及内容

  1. #vi /etc/php.ini
  2. 加入此行
  3. 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.连接数据库成功,但查询时出现数据乱码

当远程连接oraceloci_connect的第四个参数为charset

OCI_connect('','','','zhs16gbk');

此方法觉得有效,不管你怎么改php、linux系统编码都解决不了。亲测。


以上都是自己在配置时的流程,亲测有效,遇到的这三个问题也是可以解决的。








欢迎光临 WDlinux官方论坛 (http://wdlinux.cn/bbs/) Powered by Discuz! 7.2