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 相关文章推荐
Smarty结合Ajax实现无刷新留言本实例
Jan 02 PHP
PHP和javascript常用正则表达式及用法实例
Jul 01 PHP
PHP中通过fopen()函数访问远程文件示例
Nov 18 PHP
PHP列出MySQL中所有数据库的方法
Mar 12 PHP
php 输入输出流详解及示例代码
Aug 25 PHP
深入浅析Yii admin的权限控制
Aug 31 PHP
基于PHP制作验证码
Oct 12 PHP
CI框架使用composer安装的依赖包步骤与方法分析
Nov 21 PHP
php实现二叉树中和为某一值的路径方法
Oct 14 PHP
PHP+Ajax简单get验证操作示例
Mar 02 PHP
laravel 使用auth编写登录的方法
Sep 30 PHP
php远程请求CURL实例教程(爬虫、保存登录状态)
Dec 10 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
ip签名探针
2006/10/09 PHP
无数据库的详细域名查询程序PHP版(4)
2006/10/09 PHP
PHP中动态显示签名和ip原理
2007/03/28 PHP
php实现微信公众平台账号自定义菜单类
2014/12/02 PHP
PHP遍历数组的三种方法及效率对比分析
2015/02/12 PHP
php实现面包屑导航例子分享
2015/12/19 PHP
PHP中字符串长度的截取用法示例
2017/01/12 PHP
apache集成php7.3.5的详细步骤
2019/06/20 PHP
基于PHP的登录和注册的功能的实现
2020/08/06 PHP
jQuery学习笔记 操作jQuery对象 属性处理
2012/09/19 Javascript
微信企业号开发之微信考勤百度地图定位
2015/09/11 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/09/29 Javascript
JavaScript实现前端实时搜索功能
2020/03/26 Javascript
VUE 使用中踩过的坑
2018/02/08 Javascript
vue项目在安卓低版本机显示空白的原因分析(两种)
2018/09/04 Javascript
vue组件开发之tab切换组件使用详解
2020/08/21 Javascript
从源码角度来回答keep-alive组件的缓存原理
2021/01/18 Javascript
pygame学习笔记(6):完成一个简单的游戏
2015/04/15 Python
Using Django with GAE Python 后台抓取多个网站的页面全文
2016/02/17 Python
Python正则表达式匹配中文用法示例
2017/01/17 Python
Python使用defaultdict读取文件各列的方法
2017/05/11 Python
Python基于回溯法子集树模板解决旅行商问题(TSP)实例
2017/09/05 Python
Python:合并两个numpy矩阵的实现
2019/12/02 Python
如何基于Python实现电子邮件的发送
2019/12/16 Python
使用TensorFlow直接获取处理MNIST数据方式
2020/02/10 Python
Python selenium文件上传下载功能代码实例
2020/04/13 Python
Python matplotlib画图时图例说明(legend)放到图像外侧详解
2020/05/16 Python
python 如何实现遗传算法
2020/09/22 Python
详解python 条件语句和while循环的实例代码
2020/12/28 Python
基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作
2016/01/11 HTML / CSS
香港化妆品经销商:我的公主
2016/08/05 全球购物
Calzedonia美国官网:意大利风格袜子、打底裤和沙滩装
2018/07/19 全球购物
Notino瑞典:购买香水和美容产品
2019/07/26 全球购物
简单租房协议书范本
2014/08/20 职场文书
2015年农村党员公开承诺事项
2015/04/28 职场文书
教师继续教育反思周记
2015/06/25 职场文书