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入门源程序
Oct 09 PHP
openPNE常用方法分享
Nov 29 PHP
PHP开源开发框架ZendFramework使用中常见问题说明及解决方案
Jun 12 PHP
PHP使用header()输出图片缓存实例
Dec 09 PHP
php通过smtp邮件验证登陆的方法
May 11 PHP
PHP面向对象程序设计之对象生成方法详解
Dec 02 PHP
PHP微信模板消息操作示例
Jun 29 PHP
php简单中奖算法(实例)
Aug 15 PHP
阿里云Win2016安装Apache和PHP环境图文教程
Mar 11 PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
Oct 15 PHP
PHP命令行与定时任务
Apr 01 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 empty,isset,is_null判断比较(差异与异同)
2010/10/19 PHP
php中get_headers函数的作用及用法的详细介绍
2013/04/27 PHP
php将mysql数据库整库导出生成sql文件的具体实现
2014/01/08 PHP
PHP使用静态方法的几个注意事项
2014/09/16 PHP
phpStudy配置多站点多域名方法及遇到的403错误解决方法
2017/10/19 PHP
js window.event对象详尽解析
2009/02/17 Javascript
jQuery中与toggleClass等价的程序段 以及未来学习的方向
2010/03/18 Javascript
基于jquery的页面划词搜索JS
2010/09/14 Javascript
javascript 循环调用示例介绍
2013/11/20 Javascript
Jquery日期选择datepicker插件用法实例分析
2015/06/08 Javascript
jQuery获取checkboxlist的value值的方法
2015/09/27 Javascript
浅谈angularJS中的事件
2016/07/12 Javascript
jQuery+Pdo编写login登陆界面
2016/08/01 Javascript
Angular2利用组件与指令实现图片轮播组件
2017/03/27 Javascript
前端构建工具之gulp的语法教程
2017/06/12 Javascript
详解vue-meta如何让你更优雅的管理头部标签
2018/01/18 Javascript
React如何避免重渲染
2018/04/10 Javascript
浅谈mvvm-simple双向绑定简单实现
2018/04/18 Javascript
基于vue-cli npm run build之后vendor.js文件过大的解决方法
2018/09/27 Javascript
利用原生JS实现data方法示例代码
2019/05/28 Javascript
Vue快速实现通用表单验证功能
2019/12/05 Javascript
小程序使用分包的示例代码
2020/03/23 Javascript
实例讲解Python中函数的调用与定义
2016/03/14 Python
python使用itchat库实现微信机器人(好友聊天、群聊天)
2018/01/04 Python
Python基于plotly模块实现的画图操作示例
2019/01/23 Python
pyqt5移动鼠标显示坐标的方法
2019/06/21 Python
一款简洁的纯css3代码实现的动画导航
2014/10/31 HTML / CSS
Book Depository欧盟:一家领先的国际图书零售商
2019/05/21 全球购物
阿里巴巴英国:Alibaba英国
2019/12/11 全球购物
阿里巴巴Oracle DBA笔试题答案-备份恢复类
2013/11/20 面试题
追悼会子女答谢词
2014/01/28 职场文书
村党支部群众路线教育实践活动对照检查材料
2014/09/26 职场文书
买房协议书范本
2014/10/23 职场文书
乡镇防汛工作汇报
2014/10/28 职场文书
2015年汽车销售工作总结
2015/04/07 职场文书
Python包argparse模块常用方法
2021/06/04 Python