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简单封装了一些常用JS操作
Feb 25 PHP
mayfish 数据入库验证代码
Apr 30 PHP
PHP 正则判断中文UTF-8或GBK的思路及具体实现
Nov 26 PHP
CodeIgniter框架URL路由总结
Sep 03 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
May 21 PHP
yii2实现根据时间搜索的方法
May 25 PHP
PHP缩略图生成和图片水印制作
Jan 07 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
Sep 16 PHP
PHP合并两个或多个数组的方法
Jan 20 PHP
PHP从零开始打造自己的MVC框架之类的自动加载实现方法详解
Jun 03 PHP
laravel解决迁移文件一次删除创建字段报错的问题
Oct 24 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
Feb 27 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制作图型计数器的例子
2006/10/09 PHP
php计算整个目录大小的方法
2015/06/19 PHP
firefox下jquery ajax返回object XMLDocument处理方法
2014/01/26 Javascript
使用js获取图片原始尺寸
2014/12/03 Javascript
javascript制作2048游戏
2015/03/30 Javascript
jQuery网页右侧广告跟随滚动代码分享
2020/04/20 Javascript
用window.onerror捕获并上报Js错误的方法
2016/01/27 Javascript
基于javascript编写简单日历
2016/05/02 Javascript
Node.js中常规的文件操作总结
2016/10/13 Javascript
javascript构造函数以及原型对象的理解
2017/01/13 Javascript
详解使用vue实现tab 切换操作
2017/07/03 Javascript
Angularjs 手写日历的实现代码(不用插件)
2017/10/18 Javascript
关于Vue组件库开发详析
2018/07/01 Javascript
新手必须知的Node.js 4个JavaScript基本概念
2018/09/16 Javascript
vue2.0 解决抽取公用js的问题
2020/07/31 Javascript
Vue中keep-alive组件的深入理解
2020/08/23 Javascript
Python脚本处理空格的方法
2016/08/08 Python
python非递归全排列实现方法
2017/04/10 Python
用python与文件进行交互的方法
2018/03/01 Python
python实现校园网自动登录的示例讲解
2018/04/22 Python
Python使用add_subplot与subplot画子图操作示例
2018/06/01 Python
利用Python如何批量修改数据库执行Sql文件
2018/07/29 Python
关于windows下Tensorflow和pytorch安装教程
2020/02/04 Python
jupyter实现重新加载模块
2020/04/16 Python
用 Python 制作地球仪的方法
2020/04/24 Python
Python实现ElGamal加密算法的示例代码
2020/06/19 Python
详解pycharm2020.1.1专业版安装指南(推荐)
2020/08/07 Python
药剂学专业应届生自荐信
2013/09/29 职场文书
应届毕业生个人自荐信范文
2013/11/30 职场文书
工作的心得体会
2013/12/31 职场文书
阳光体育活动实施方案
2014/05/25 职场文书
教室布置标语
2014/06/26 职场文书
民事授权委托书范文
2014/08/02 职场文书
师德师风学习材料
2014/12/19 职场文书
2015年档案室工作总结
2015/05/23 职场文书
工作转正自我鉴定范文
2019/06/21 职场文书