WAMP环境中扩展oracle函数库(oci)


Posted in PHP onJune 26, 2015

同事昨天接到一个任务,要用php处理oracle数据库的内容,但是php打开oracle扩展不是像mysql那样直接用就行,需要下一点东西才能打开

第一步 需要到oracle官方下载一个install client 包,在win下找到你对应系统版本的zip(注意这里是系统版本)

截止到2015-06-25,下载地址如下http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

例如选择 Instant Client for Microsoft Windows (x64)  因为php扩展的是OCI,所以必须选对应版本的最全的那个,别的都没有OCI,这里下载可能需要有个账号,验证以后就可以下载,直接用连接下载不好用,没有的话注册一下就好了

第二部,需要下载win系统中的扩展包也就是.dll文件  下载地址   http://pecl.php.net/package/oci8   下面一段废话是告诉你怎么找的

http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html 在这个地址下点击

official Instant Client site.  拉到最后 Related Developer Centers 里面点     "PHP - OCI8 extension"

然后选项卡 downloads

点OCI8  到   http://pecl.php.net/package/oci8 

然后怎么下载就不多说了

到这里完成下载两个zip包,然后就是配置PHP

第三,解压下载的第一个文件,到电脑任意目录,解压后得到文件目录 instantclient_12 _1  建议把后面的 "_12_1"去掉,以后改版本就不用动环境变量了

进入这个目录后双击打开 adrci.exe

得到如下命令行窗口,证明这个客户端在你本地可用

WAMP环境中扩展oracle函数库(oci)

复制目录,我的是  F:\dev\instantclient  配置到系统的path环境变量,

第四,解压下载的dll的压缩包,复制其中的  php_oci8.dll  php_oci8_11g.dll  php_oci8_12c.dll  我目前就是这三个,到php的扩展包文件,通常是 ....../php/ext/目录下

其实可以不替换,不过建议还是替换一下好,

然后打开php.ini 把扩展打开,最后一个是后来加进去的,php本来没有,反正上面包里有的dll文件都写进去应该错不了,顶多运行php的时候多加载几个库

extension=php_pdo_oci.dll

extension=php_oci8.dll   ; Use with Oracle 10gR2 Instant Client
extension=php_oci8_11g.dll ; Use with Oracle 11gR2 Instant Client
extension=php_oci8_12c.dll ; Use with Oracle 12c  Instant Client

然后重启httpd服务,打开 phpinfo(); 应该能看到

PDO support enabled
PDO drivers mysql, oci, odbc
 
OCI8 Support enabled
OCI8 DTrace Support disabled
OCI8 Version 2.0.8
Revision $Id: f04114d4d67cffea4cdc2ed3b7f0229c2caa5016 $
Oracle Run-time Client Library Version 12.1.0.2.0
Oracle Compile-time Instant Client Version 10.2

这样就说明扩展打开成功了

最后就是连接oracle数据库了

这里给一个实例连接 原文连接 http://www.orczhou.com/index.php/2010/09/php-oci8-oracle/

<?php 
//配置信息
$ora_host = "172.16.1.150";
$ora_port="1521";
$ora_sid = "cop";
$ora_username = "webdev";
$ora_password = "webdev";
$charset = "UTF8"; ### zhs16gbk ###

//构建Easy Connect string
//(如果tnsnames.ora中已经有了,可以直接使用Connect Name)
$ora_connstr = "(description=(address=(protocol=tcp)
(host=".$ora_host.")(port=".$ora_port."))
(connect_data=(service_name=".$ora_sid.")))";
//连接数据库
$conn = oci_connect($ora_username, $ora_password,$ora_connstr);
//执行Query,这里$res接收的是一个boolean值
$stid = oci_parse($conn, 'select * FROM dq_try_app');
$res = oci_execute($stid);

//在while循环中使用oci_fetch_array遍历结果。
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
  
  foreach ($row as $item) {
    echo $item."***";
  }
  echo "<br>";
  
}
//var_dump($stid);  
?>

至此,整个的扩展加连接就完成了

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
PHP与已存在的Java应用程序集成
Oct 09 PHP
Ajax PHP 边学边练 之三 数据库
Nov 26 PHP
在PHP中使用redis
Nov 04 PHP
五款PHP代码重构工具推荐
Oct 14 PHP
PHP实现HTML生成PDF文件的方法
Nov 07 PHP
Codeigniter通过SimpleXML将xml转换成对象的方法
Mar 19 PHP
PHP中curl_setopt函数用法实例分析
Apr 16 PHP
php结合安卓客户端实现查询交互实例
May 05 PHP
PHP7 echo和print语句实例用法
Feb 15 PHP
PHP获取ttf格式文件字体名的方法示例
Mar 06 PHP
tp5(thinkPHP5框架)captcha验证码配置及验证操作示例
May 28 PHP
laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例
Jan 25 PHP
PHP获取当前相对于域名目录的方法
Jun 26 #PHP
php通过获取头信息判断图片类型的方法
Jun 26 #PHP
以文件形式缓存php变量的方法
Jun 26 #PHP
PHP批量去除BOM头代码分享
Jun 26 #PHP
PHP多态代码实例
Jun 26 #PHP
PHP微信开发之二维码生成类
Jun 26 #PHP
Thinkphp关闭缓存的方法
Jun 26 #PHP
You might like
PHP高自定义性安全验证码代码
2011/11/27 PHP
php使用memcoder将视频转成mp4格式的方法
2015/03/12 PHP
PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
2016/12/05 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
用Javascript数组处理多个字符串的连接问题
2009/08/20 Javascript
JQuery 遮罩层实现(mask)实现代码
2010/01/09 Javascript
js弹窗代码 可以指定弹出间隔
2010/07/03 Javascript
新发现一个骗链接的方法(js读取cookies)
2012/01/11 Javascript
一行命令搞定node.js 版本升级
2014/07/20 Javascript
jquery访问ashx文件示例代码
2014/08/11 Javascript
js跨域资源共享 基础篇
2016/07/02 Javascript
微信小程序 在Chrome浏览器上运行以及WebStorm的使用
2016/09/27 Javascript
利用angular.copy取消变量的双向绑定与解析
2016/11/25 Javascript
js判断用户是输入的地址请求的路径(实例讲解)
2017/07/18 Javascript
[js高手之路]从原型链开始图解继承到组合继承的产生详解
2017/08/28 Javascript
vue2.0+ 从插件开发到npm发布的示例代码
2018/04/28 Javascript
工作中常用到的ES6语法
2018/09/04 Javascript
微信小程序实现的3d轮播图效果示例【基于swiper组件】
2018/12/11 Javascript
vue路由分文件拆分管理详解
2020/08/13 Javascript
[01:04]DOTA2上海特锦赛现场采访 FreeAgain遭众解说围攻
2016/03/25 DOTA
Python表示矩阵的方法分析
2017/05/26 Python
django利用request id便于定位及给日志加上request_id
2018/08/26 Python
python实现抽奖小程序
2020/04/15 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
2020/01/15 Python
英国女士家居服网站:hush
2017/08/09 全球购物
L’AGENCE官网:加州女装品牌
2018/06/03 全球购物
德国大型箱包和皮具商店:Koffer
2019/10/01 全球购物
介绍一下如何优化MySql
2016/12/20 面试题
珍爱生命演讲稿
2014/05/10 职场文书
经济贸易系求职信
2014/08/04 职场文书
普通党员对照检查材料
2014/08/28 职场文书
大学生学期个人总结
2015/02/12 职场文书
和谐拯救危机观后感
2015/06/15 职场文书
新员工实习期个人工作总结
2015/10/15 职场文书
Java日常练习题,每天进步一点点(38)
2021/07/26 Java/Android
nginx内存池源码解析
2021/11/20 Servers