因项目需要在linux下进行php5.3的oracle客户端编译,简要介绍一下步骤及走过的弯路。

1.下载Oracle客户端程序包,其中包含OCI、OCCI和JDBC-OCI等相关文件。

1.1下载文件地址

http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

根据操作系统的版本选择对应的软件,我需要的是X86_64选择

Instant Client for Linux x86-64

1.2需要下载的文件如下:

oracle-instantclient11.1-basic-11.1.0.7.0-1.x86_64.rpm

oracle-instantclient11.1-devel-11.1.0.7.0-1.x86_64.rpm

oracle-instantclient11.1-sqlplus-11.1.0.7.0-1.x86_64.rpm

需要强调的一点是这里需要注册一个oracle的账户才能正常下载。

2.安装Oracle客户端程序包。

将程序包上传到服务器指定目录里

chmod +x *.rpm

#给RPM包赋执行权限
rpm -ivh oracle-instantclient11.1-basic-11.1.0.7.0-1.x86_64.rpm oracle-instantclient11.1-devel-11.1.0.7.0-1.x86_64.rpm oracle-instantclient11.1-sqlplus-11.1.0.7.0-1.x86_64.rpm

#安装RPM包
echo "/usr/lib/oracle/11.1/client64/lib/" > /etc/ld.so.conf.d/oracle_client.conf

#将库路径加到默认加载中
/sbin/ldconfig

#重新加载动态链接库

3.安装OCI8的php扩展(这里指定php的安装路径为/usr/local/webserver/php)

yum install libaio

#yum安装libaio库,libaio是Linux下的一个异步非阻塞接口,它提供了以异步非阻塞方式来读写文件的方式,读写效率比较高

wget http://pecl.php.net/get/oci8-1.4.10.tgz

#下载OCI扩展

tar zxvf oci8-1.4.10.tgz

#解压

cd oci8-1.4.10
/usr/local/webserver/php/bin/phpize CFLAGS="-I/usr/lib/oracle/11.1/client64" CXXFLAGS="-I/usr/lib/oracle/11.1/client64"

#使用phpize准备 PHP 外挂模块的编译环境,会根据指定的环境变量生成编译时需要的makefile,phpize是属于php-devel的内容,所以centos下只要运行yum install php-devel进行安装即可

./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-oci8=/usr/lib/oracle/11.1/client64
make
make install

#编译,安装

需要强调的是make的时候会报错,显示各种找不到库文件,需要对makefile文件进行修改加入oralce的运行库地址

打开makefile,寻找INCLUDE,形式如下:

INCLUDES = -I/usr/local/php/include/php -I/usr/include/oracle/10.2.0.3/client

然后在末尾加上="-I/usr/lib/oracle/11.1/client64,然后重新make就会成功了。

4.修改PHP.ini(/usr/local/webserver/php/etc/php.ini)

在extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/"后增加一行:

extension = "oci8.so"

5.重启apache让OCI生效

6.在web目录下创建phpinfo.php文件在其中输入一下内容,并通过web访问

<?php

phpinfo();

?>

如果找到OCI8的部分就说明OCI安装正常了,如下图所示

接下来就能通过php访问oracle数据库了,需要注意的是php下Oracle的连接字符串

<?php

$username='***';
$passwd='***';
$protocol='TCP';
$SERVICE_NAME='***';
$ORACLE_SERVER_IP_ADDRESS='***.***.***.***';
$Port='1521';

$db = "(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = $protocol)(HOST = $ORACLE_SERVER_IP_ADDRESS)(PORT = $Port)))(CONNECT_DATA=(SID=$SERVICE_NAME)))";
$conn = oci_connect($username,$passwd, $db);
PutEnv("NLS_LANG=SIMPLIFIED CHINESE_CHINA.AL32UTF8");
if (!$conn) {

    $e = oci_error();
    print htmlentities($e['message']);
    exit;
}else {
    echo "连接oracle成功!";
    return $conn;
}

?>

 

作者: 付海军
出处:http://fuhj02.cnblogs.com
版权:本文版权归作者和博客园共有
转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接且保证内容完整!否则必究法律责任!
个人网站: http://www.fuhaijun.com/

最新文章

  1. 11个提问频率最高的PHP面试题
  2. 2014-10-28——iframe多层嵌套时获取元素总结
  3. PowerDesigner给两个表添加reference,中间显示外键信息步骤
  4. python 代码片段23
  5. Codeforces Round #313 (Div. 1) A. Gerald&#39;s Hexagon
  6. BZOJ1001 狼抓兔子(裸网络流)
  7. (转)JS浮动窗口(随浏览器滚动而滚动)
  8. 读书计划——javascript dom 编程艺术(一)
  9. ubuntu 引导删除
  10. DSP连接不上CCS3.3的问题讨论
  11. Redis源代码分析(二十八)--- object创建和释放redisObject物
  12. Android应用开发中三种常见的图片压缩方法
  13. 潭州课堂25班:Ph201805201 爬虫基础 第七课 Python与常见加密方式 (课堂笔记)
  14. 什么是lambda函数,它有什么好处
  15. Gravitee.io api gateway 试用
  16. Linux 中指定启动 tomcat 的 jdk 版本
  17. Google的开源C++单元测试框架Google Test
  18. 【jmeter进阶之逻辑控制器】
  19. material design动画
  20. linux下的同步与互斥

热门文章

  1. 临时表VS表变量--因地制宜,合理使用
  2. SymmetricDS 3.5.0 发布,数据同步和复制
  3. C# ADO.NET SqlDataAdapter中传递参数
  4. WinServer2008 R2搭建TFS2013小结(无法连接Internet手动安装)
  5. NABC模型进行需求分析
  6. vim和tmux主题颜色不一致问题
  7. [自娱自乐] 4、超声波测距模块DIY笔记(四)——终结篇&#183;基于C#上位机软件开发
  8. ASP.NET MVC简单编程之(二)经典路由篇
  9. LINQ-to-SQL那点事~LINQ-to-SQL中的并发冲突与应对
  10. hdu 1864 01背包 最大报销额