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 防止单引号,双引号在接受页面转义
Jul 10 PHP
利用PHP实现短域名互转
Jul 05 PHP
php while循环得到循环次数
Oct 26 PHP
PHP反射类ReflectionClass和ReflectionObject的使用方法
Nov 13 PHP
php 伪静态之IIS篇
Jun 02 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十六)
Jun 30 PHP
PHP中的插件机制原理和实例
Jul 08 PHP
PHP5.3与5.5废弃与过期函数整理汇总
Jul 10 PHP
PHP实现模仿socket请求返回页面的方法
Nov 04 PHP
php注册登录系统简化版
Dec 28 PHP
php微信开发之批量生成带参数的二维码
Jun 26 PHP
php结合ajax实现手机发红包的案例
Oct 13 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
SMARTY学习手记
2007/01/04 PHP
Zend 输出产生XML解析错误
2009/03/03 PHP
php array_unique之后json_encode需要注意
2011/01/02 PHP
php写入数据到CSV文件的方法
2015/03/14 PHP
YII CLinkPager分页类扩展增加显示共多少页
2016/01/29 PHP
php中preg_replace_callback函数简单用法示例
2016/07/21 PHP
PHP如何通过表单直接提交大文件详解
2019/01/08 PHP
JavaScript高级程序设计(第3版)学习笔记12 js正则表达式
2012/10/11 Javascript
九种js弹出对话框的方法总结
2013/03/12 Javascript
js实现杯子倒水问题自动求解程序
2013/03/25 Javascript
nodejs调用cmd命令实现复制目录
2015/05/04 NodeJs
手机端页面rem宽度自适应脚本
2015/05/20 Javascript
javascript实现类似于新浪微博搜索框弹出效果的方法
2015/07/27 Javascript
JavaScript中的跨浏览器事件操作的基本方法整理
2016/05/20 Javascript
详解jquery validate实现表单验证 (正则表达式)
2017/01/18 Javascript
常用jQuery选择器汇总
2017/02/02 Javascript
使用 NodeJS+Express 开发服务端的简单介绍
2017/04/07 NodeJs
Angular数据绑定机制原理
2018/04/17 Javascript
node.js的Express服务器基本使用教程
2019/01/09 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
python根据文件大小打log日志
2014/10/09 Python
python导入csv文件出现SyntaxError问题分析
2017/12/15 Python
python实现日常记账本小程序
2018/03/10 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
2018/07/11 Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
2019/06/25 Python
Python PIL图片添加字体的例子
2019/08/22 Python
西班牙英格列斯百货法国官网:El Corte Inglés法国
2017/07/09 全球购物
Move Free官方海外旗舰店:美国骨关节健康专业品牌
2017/12/06 全球购物
工程师岗位职责
2013/11/08 职场文书
护理毕业生自我鉴定
2014/02/11 职场文书
白酒市场营销方案
2014/02/25 职场文书
行政助理工作职责范本
2014/03/04 职场文书
学生期末评语大全
2014/04/30 职场文书
入党自荐书范文
2015/03/05 职场文书
 Redis 串行生成顺序编码的方法实现
2022/04/03 Redis