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语法(4)
Oct 09 PHP
防止MySQL注入或HTML表单滥用的PHP程序
Jan 21 PHP
PHP对字符串的递增运算分析
Aug 08 PHP
php正则表达式(regar expression)
Sep 10 PHP
php5.5中类级别的常量使用介绍
Oct 02 PHP
php foreach循环中使用引用的问题
Nov 06 PHP
Php连接及读取和写入mysql数据库的常用代码
Aug 11 PHP
WampServer下安装多个版本的PHP、mysql、apache图文教程
Jan 07 PHP
PHP获取二维数组中某一列的值集合
Dec 25 PHP
PHP实现APP微信支付的实例讲解
Feb 10 PHP
php常用字符串查找函数strstr()与strpos()实例分析
Jun 21 PHP
Laravel 将数据表的数据导出,并生成seeds种子文件的方法
Oct 09 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
收音机怀古---春雷3P7图片欣赏
2021/03/02 无线电
第三章 php操作符与控制结构代码
2011/12/30 PHP
深入php函数file_get_contents超时处理的方法详解
2013/06/03 PHP
php中实现记住密码下次自动登录的例子
2014/11/06 PHP
PHP中的命名空间详细介绍
2015/07/02 PHP
php UNIX时间戳用法详解
2017/02/16 PHP
Laravel框架控制器的request与response用法示例
2019/09/30 PHP
如何做到打开一个页面,过几分钟自动转到另一页面
2007/04/20 Javascript
jQuery EasyUI 中文API Button使用实例
2010/04/14 Javascript
js数组操作学习总结
2013/11/04 Javascript
jsPDF生成pdf后在网页展示实例
2014/01/16 Javascript
Linux下编译安装php libevent扩展实例
2015/02/14 Javascript
jQuery简单实现title提示效果示例
2016/08/01 Javascript
javascript加载xml 并解析各节点的值(实现方法)
2016/10/12 Javascript
详解Node.js串行化流程控制
2017/05/04 Javascript
详解jQuery中关于Ajax的几个常用的函数
2017/07/17 jQuery
利用Decorator如何控制Koa路由详解
2018/06/26 Javascript
vue 自动化路由实现代码
2019/09/03 Javascript
JS随机密码生成算法
2019/09/23 Javascript
Vue使用Ref跨层级获取组件的步骤
2021/01/25 Vue.js
[53:23]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
python黑魔法之参数传递
2016/02/12 Python
Django自定义manage命令实例代码
2018/02/11 Python
python3安装pip3(install pip3 for python 3.x)
2018/04/03 Python
python批量读取txt文件为DataFrame的方法
2018/04/03 Python
浅谈django框架集成swagger以及自定义参数问题
2020/07/07 Python
深入理解HTML的FormData对象
2016/05/17 HTML / CSS
比利时网上药店: Drogisterij.net
2017/03/17 全球购物
加拿大票务网站:Ticketmaster加拿大
2017/07/17 全球购物
以色列的身体护理及家居香薰品牌:Sabon NYC
2018/02/23 全球购物
提拔干部考察材料
2014/05/26 职场文书
房屋出租委托书格式
2014/09/23 职场文书
2014幼儿园小班工作总结
2014/11/10 职场文书
2015年纪检监察工作总结
2015/04/08 职场文书
护士岗位竞聘书
2015/09/15 职场文书
关于EntityWrapper的in用法
2022/03/22 Java/Android