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 URL编码解码函数代码
Mar 10 PHP
PHP编程最快明白(第一讲 软件环境和准备工作)
Oct 25 PHP
PHP类与对象中的private访问控制的疑问
Nov 01 PHP
PHP文件上传主要代码讲解
Sep 30 PHP
php跨域cookie共享使用方法
Feb 20 PHP
php生成随机密码自定义函数代码(简单快速)
May 10 PHP
PHP ignore_user_abort函数详细介绍和使用实例
Jul 15 PHP
php简单判断两个字符串是否相等的方法
Jul 13 PHP
php无限分类使用concat如何实现
Nov 05 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
Dec 10 PHP
php生出随机字符串
Jul 06 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
星际争霸任务指南——人族
2020/03/04 星际争霸
一首老MP3,致敬WAR3经典
2021/03/08 魔兽争霸
查找php配置文件php.ini所在路径的二种方法
2014/05/26 PHP
PHP利用超级全局变量$_POST来接收表单数据的实例
2016/11/05 PHP
PHP 数组操作详解【遍历、指针、函数等】
2020/05/13 PHP
innerHTML,outerHTML,innerTEXT三者之间的区别
2007/01/28 Javascript
jQuery 菜单随滚条改为以定位方式(固定要浏览器顶部)
2012/05/24 Javascript
基于jquery实现拆分姓名的方法(纯JS版)
2013/05/08 Javascript
JavaScript将相对地址转换为绝对地址示例代码
2013/07/19 Javascript
使用JS+plupload直接批量上传图片到又拍云
2014/12/01 Javascript
JS的数组迭代方法
2015/02/05 Javascript
JavaScript 事件绑定及深入
2015/04/13 Javascript
JS+CSS实现美化的下拉列表框效果
2015/08/11 Javascript
基于JavaScript实现自动更新倒计时效果
2016/12/19 Javascript
深入理解jquery中extend的实现
2016/12/22 Javascript
JavaScript基于扩展String实现替换字符串中index处字符的方法
2017/06/13 Javascript
强大的JavaScript响应式图表Chartist.js的使用
2017/09/13 Javascript
详解Vue SPA项目优化小记
2018/07/03 Javascript
vue使用laydate时间插件的方法
2018/11/14 Javascript
详解vue中axios请求的封装
2019/04/08 Javascript
通过js随机函数Math.random实现乱序
2020/05/19 Javascript
[11:01]2014DOTA2西雅图邀请赛 冷冷带你探秘威斯汀
2014/07/08 DOTA
python 将字符串转换成字典dict
2013/03/24 Python
Python中将字典转换为列表的方法
2016/09/21 Python
Python中使用遍历在列表中添加字典遇到的坑
2019/02/27 Python
pyqt5实现登录界面的模板
2020/05/30 Python
PYTHON绘制雷达图代码实例
2019/10/15 Python
django数据模型on_delete, db_constraint的使用详解
2019/12/24 Python
Python基于pygame实现单机版五子棋对战
2019/12/26 Python
python MD5加密的示例
2020/10/19 Python
Notino希腊:购买香水和美容产品
2019/07/25 全球购物
vue项目实现分页效果
2021/03/24 Vue.js
电子商务专业个人的自我评价分享
2013/10/29 职场文书
大四自我鉴定
2014/02/08 职场文书
环卫工作个人总结
2015/03/04 职场文书
2015年公路养护工作总结
2015/05/13 职场文书