Linux下安装oracle客户端并配置php5.3


Posted in PHP onOctober 12, 2014

因项目需要在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安装正常了,如下图所示

Linux下安装oracle客户端并配置php5.3

接下来就能通过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; 

}

?>
PHP 相关文章推荐
生成卡号php代码
Apr 09 PHP
PHP 实用代码收集
Jan 22 PHP
PHPwind整合最土系统用户同步登录实现方法
Dec 08 PHP
ThinkPHP采用模块和操作分析
Apr 18 PHP
PHP中数字检测is_numeric与ctype_digit的区别介绍
Oct 04 PHP
PHP ? EasyUI DataGrid 资料取的方式介绍
Nov 07 PHP
PHP实现变色验证码实例
Jan 06 PHP
PHP对象相互引用的内存溢出实例分析
Aug 28 PHP
thinkphp文件处理类Dir.class.php的用法分析
Dec 08 PHP
php将12小时制转换成24小时制的方法
Mar 31 PHP
Smarty模板变量与调节器实例详解
Jul 20 PHP
PHP利用curl发送HTTP请求的实例代码
Jul 09 PHP
PHP依赖倒置(Dependency Injection)代码实例
Oct 11 #PHP
php实现设计模式中的单例模式详解
Oct 11 #PHP
PHP实现设计模式中的抽象工厂模式详解
Oct 11 #PHP
php中字符集转换iconv函数使用总结
Oct 11 #PHP
PHP生成网站桌面快捷方式代码分享
Oct 11 #PHP
PHP中执行cmd命令的方法
Oct 11 #PHP
PHP @ at 记号的作用示例介绍
Oct 10 #PHP
You might like
PHP学习之PHP表达式
2006/10/09 PHP
PHP 抓取网页图片并且另存为的实现代码
2010/03/24 PHP
PHP判断文件是否存在、是否可读、目录是否存在的代码
2012/10/03 PHP
PHP中实现Bloom Filter算法
2015/03/30 PHP
yii2-GridView在开发中常用的功能及技巧总结
2017/01/07 PHP
javascript中的location用法简单介绍
2007/03/07 Javascript
手把手教你自己写一个js表单验证框架的方法
2010/09/14 Javascript
EasyUI中的tree用法介绍
2011/11/01 Javascript
js获取单选框或复选框值及操作
2012/12/18 Javascript
jQuery $.data()方法使用注意细节
2012/12/31 Javascript
window.location.href中url中数据量太大时的解决方法
2013/12/23 Javascript
原生JavaScript生成GUID的实现示例
2014/09/05 Javascript
javascript框架设计读书笔记之数组的扩展与修复
2014/12/02 Javascript
JavaScript函数的一些注意要点小结及js匿名函数
2015/11/10 Javascript
深入理解jQuery 事件处理
2016/06/14 Javascript
JS构造函数与原型prototype的区别介绍
2016/07/04 Javascript
功能强大的Bootstrap效果展示(二)
2016/08/03 Javascript
又一款MVVM组件 构建自己的Vue组件(2)
2017/03/13 Javascript
JavaScript canvas实现围绕旋转动画
2017/11/18 Javascript
Vue.js devtool插件安装后无法使用的解决办法
2017/11/27 Javascript
浅析vue cli3 封装Svgicon组件正确姿势(推荐)
2020/04/27 Javascript
如何使用jQuery操作Cookies方法解析
2020/09/08 jQuery
Python xlwt设置excel单元格字体及格式
2020/04/18 Python
实践Vim配置python开发环境
2018/07/02 Python
python 下 CMake 安装配置 OPENCV 4.1.1的方法
2019/09/30 Python
浅谈python中频繁的print到底能浪费多长时间
2020/02/21 Python
HTML5中通过li-canvas轻松实现单图、多图、圆角图绘制,单行文字、多行文字等
2018/11/30 HTML / CSS
美国网上鞋城:Shoeline.com
2016/11/17 全球购物
什么是索引指示器
2012/08/20 面试题
Linux的主要特性
2014/10/06 面试题
技术总监管理岗位职责
2014/03/09 职场文书
老师对学生的寄语
2014/04/09 职场文书
低碳环保标语
2014/06/12 职场文书
酒后驾车标语
2014/06/30 职场文书
2014年银行客户经理工作总结
2014/11/12 职场文书
小学教育见习总结
2015/06/23 职场文书