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语法(3)
Oct 09 PHP
php fckeditor 调用的函数
Jun 21 PHP
在命令行下运行PHP脚本[带参数]的方法
Jan 22 PHP
解析获取优酷视频真实下载地址的PHP源代码
Jun 26 PHP
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
Apr 25 PHP
PHP日期函数date格式化UNIX时间的方法
Mar 19 PHP
PHP实现递归无限级分类
Oct 22 PHP
全新Mac配置PHP开发环境教程
Feb 03 PHP
46 个非常有用的 PHP 代码片段
Feb 16 PHP
PHP的PDO常用类库实例分析
Apr 07 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
Oct 18 PHP
Laravel自动生成UUID,从建表到使用详解
Oct 24 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 输出URL的快捷方式示例代码
2013/09/22 PHP
easyui的tabs update正确用法分享
2014/03/21 PHP
Windows下的PHP安装文件线程安全和非线程安全的区别
2014/04/23 PHP
WordPress开发中用于标题显示的相关函数使用解析
2016/01/07 PHP
微信支付开发动态链接Native支付
2016/07/12 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
2016/10/17 PHP
Thinkphp5.0自动生成模块及目录的方法详解
2017/04/17 PHP
My Desktop :) 桌面式代码
2008/12/29 Javascript
javascript 浏览器判断 绑定事件 arguments 转换数组 数组遍历
2009/07/06 Javascript
js Date概念详细介绍
2013/11/22 Javascript
浅析基于WEB前端页面的页面内容搜索的实现思路
2014/06/10 Javascript
js实现仿京东2级菜单效果(带延时功能)
2015/08/27 Javascript
基于JavaScript实现定时跳转到指定页面
2016/01/01 Javascript
老生常谈Javascript中的原型和this指针
2016/10/09 Javascript
JavaScript实现的选择排序算法实例分析
2017/04/14 Javascript
jQuery DOM节点的遍历方法小结
2017/08/15 jQuery
通过js动态创建标签,并设置属性方法
2018/02/24 Javascript
不得不知的ES6小技巧
2018/07/28 Javascript
jquery无缝图片轮播组件封装
2020/11/25 jQuery
mpvue实现左侧导航与右侧内容的联动
2019/10/21 Javascript
Vue使用轮询定时发送请求代码
2020/08/10 Javascript
[05:56]第十六期——新进3大C之小兔基
2014/06/24 DOTA
浅谈django中的认证与登录
2016/10/31 Python
python 创建弹出式菜单的实现代码
2017/07/11 Python
通过shell+python实现企业微信预警
2019/03/07 Python
Python玩转加密的技巧【推荐】
2019/05/13 Python
ubuntu上安装python的实例方法
2019/09/30 Python
解决pycharm同一目录下无法import其他文件
2020/02/12 Python
Python2.x与3​​.x版本有哪些区别
2020/07/09 Python
HTML5 File API改善网页上传功能
2009/08/19 HTML / CSS
德国网上超市:myTime.de
2019/08/26 全球购物
教学大赛获奖感言
2014/01/15 职场文书
《童年的发现》教学反思
2014/02/14 职场文书
物业接待员岗位职责
2015/04/15 职场文书
英语读书笔记
2015/07/02 职场文书
pytorch中的model=model.to(device)使用说明
2021/05/24 Python