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实现ODBC数据分页显示一例
Oct 09 PHP
PHP常用代码
Nov 23 PHP
php中通过smtp发邮件的类,测试通过
Jan 22 PHP
动易数据转成dedecms的php程序
Apr 07 PHP
php模拟post行为代码总结(POST方式不是绝对安全)
Feb 22 PHP
destoon公司主页模板风格的添加方法
Jun 20 PHP
PHP中list()函数用法实例简析
Jan 08 PHP
twig模板获取全局变量的方法
Feb 05 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
Apr 07 PHP
Yii2.0中使用js异步删除示例
Mar 10 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
Jun 07 PHP
基于PHP实现微信小程序客服消息功能
Aug 12 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模板技术原理【一】
2008/01/10 PHP
PHP+swoole实现简单多人在线聊天群发
2016/01/19 PHP
PHP实现文件上传功能实例代码
2017/05/18 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
jquery绑定事件不生效的解决方法
2014/02/11 Javascript
js处理表格对table进行修饰
2014/05/26 Javascript
javascript中caller和callee详解
2015/08/10 Javascript
Javascript中的Prototype到底是什么
2016/02/16 Javascript
jquery根据name取得select选中的值实例(超简单)
2018/01/25 jQuery
使用Vue写一个datepicker的示例
2018/01/27 Javascript
vue.js实现点击后动态添加class及删除同级class的实现代码
2018/04/04 Javascript
详解基于vue的服务端渲染框架NUXT
2018/06/20 Javascript
vue中的自定义分页插件组件的示例
2018/08/18 Javascript
用js编写留言板
2020/03/17 Javascript
vue渲染方式render和template的区别
2020/06/05 Javascript
详解datagrid使用方法(重要)
2020/11/06 Javascript
详解JavaScript执行模型
2020/11/16 Javascript
vue 解决IOS10低版本白屏的问题
2020/11/17 Javascript
JavaScript实现筛选数组
2021/03/02 Javascript
Python中的数据对象持久化存储模块pickle的使用示例
2016/03/03 Python
python进阶_浅谈面向对象进阶
2017/08/17 Python
对python自动生成接口测试的示例讲解
2018/11/30 Python
pthon贪吃蛇游戏详细代码
2019/01/27 Python
Tensorflow训练模型越来越慢的2种解决方案
2020/02/07 Python
Django models文件模型变更错误解决
2020/05/11 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
2020/11/24 Python
倩碧英国官网:Clinique英国
2018/08/10 全球购物
火山咖啡:Volcanica Coffee
2019/10/29 全球购物
北京某公司的.net笔试题
2014/03/20 面试题
军训的自我鉴定
2013/12/10 职场文书
留学自荐信写作方法
2014/01/27 职场文书
民事授权委托书范文
2014/08/02 职场文书
防灾减灾宣传标语
2014/10/07 职场文书
2014年新教师工作总结
2014/11/08 职场文书
2014年挂职干部工作总结
2014/12/06 职场文书
《吃水不忘挖井人》教学反思
2016/02/22 职场文书