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中实现图片的锐化
Oct 09 PHP
PHP--用万网的接口实现域名查询功能
Dec 13 PHP
探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法
Jun 06 PHP
浅析十款PHP开发框架的对比
Jul 05 PHP
php数组查找函数总结
Nov 18 PHP
PHP中使用Imagick操作PSD文件实例
Jan 26 PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
Aug 11 PHP
PHP的消息通信机制测试实例
Nov 10 PHP
PHP 中使用explode()函数切割字符串为数组的示例
May 06 PHP
Laravel中使用Queue的最基本操作教程
Dec 27 PHP
Laravel中为什么不使用blpop取队列详析
Aug 01 PHP
PHP实现百度人脸识别
May 06 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
dede3.1分页文字采集过滤规则详说(图文教程)续二
2007/04/03 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
JavaScript静态的动态
2006/09/18 Javascript
基于逻辑运算的简单权限系统(实现) JS 版
2007/03/24 Javascript
Javascript 页面模板化很多人没有使用过的方法
2012/06/05 Javascript
JS 获取select(多选下拉)中所选值的示例代码
2013/08/02 Javascript
JavaScript的Module模式编程深入分析
2013/08/13 Javascript
JavaScript生成随机字符串的方法
2015/03/19 Javascript
详解Webwork中Action 调用的方法
2016/02/02 Javascript
改变checkbox默认选中状态及取值的实现代码
2016/05/26 Javascript
JavaScript判断是否是微信浏览器
2016/06/13 Javascript
JS实现的系统调色板完整实例
2016/12/21 Javascript
关于vue.js v-bind 的一些理解和思考
2017/06/06 Javascript
JS设置随机出现2个数字的实例代码
2017/07/19 Javascript
JavaScript中Require调用js的实例分享
2017/10/27 Javascript
JavaScript实现鼠标经过表格某行时此行变色
2020/11/20 Javascript
JavaScript中arguments的使用方法详解
2020/12/20 Javascript
[05:56]第十六期——新进3大C之小兔基
2014/06/24 DOTA
Python、Javascript中的闭包比较
2015/02/04 Python
Python 3实战爬虫之爬取京东图书的图片详解
2017/10/09 Python
Python import与from import使用及区别介绍
2018/09/06 Python
Python格式化字符串f-string概览(小结)
2019/06/18 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
2019/07/17 Python
python 爬虫 实现增量去重和定时爬取实例
2020/02/28 Python
python中字典增加和删除使用方法
2020/09/30 Python
广告学专业毕业生自荐信
2013/09/24 职场文书
大学生简历中个人的自我评价
2013/10/06 职场文书
音乐系毕业生自荐信
2013/10/27 职场文书
工业设计专业推荐信
2013/10/29 职场文书
表演方阵解说词
2014/02/08 职场文书
学校教师安全责任书
2014/07/23 职场文书
股份合作协议书
2014/09/10 职场文书
离婚案件答辩状
2015/05/22 职场文书
如何用JavaScript检测当前浏览器是无头浏览器
2021/04/27 Javascript
安装配置mysql及Navicat prenium的详细流程
2021/06/10 MySQL
MySQL query_cache_type 参数与使用详解
2021/07/01 MySQL