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:风雨欲来 路在何方?
Oct 09 PHP
PHP 巧用数组降低程序的时间复杂度
Jan 01 PHP
让php处理图片变得简单 基于gb库的图片处理类附实例代码下载
May 17 PHP
控制PHP的输出:缓存并压缩动态页面
Jun 11 PHP
跟我学Laravel之请求(Request)的生命周期
Oct 15 PHP
php二维码生成
Oct 19 PHP
Zend Framework教程之Application用法实例详解
Mar 14 PHP
浅析Yii2集成富文本编辑器redactor实例教程
Apr 25 PHP
PHP 微信扫码支付源代码(推荐)
Nov 03 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
Laravel中unique和exists验证规则的优化详解
Jan 28 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
Feb 16 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
discuz7 phpMysql操作类
2009/06/21 PHP
创建配置文件 用PHP写出自己的BLOG系统 2
2010/04/12 PHP
PHP 自定义错误处理函数trigger_error()
2013/03/26 PHP
探讨:php中在foreach中使用foreach ($arr as &amp;$value) 这种类型的解释
2013/06/24 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
2015/12/21 PHP
php中的抽象方法和抽象类
2017/02/14 PHP
laravel 解决路由除了根目录其他都404的问题
2019/10/18 PHP
Thinkphp 3.2框架使用Redis的方法详解
2019/10/24 PHP
动态控制Table的js代码
2007/03/07 Javascript
JQuery.closest(),parent(),parents()寻找父结点
2012/02/17 Javascript
js转化毫秒为时间格式代码
2014/04/10 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
2014/05/26 Javascript
Jquery on绑定的事件 触发多次实例代码
2016/12/08 Javascript
Bootstrap CSS组件之导航条(navbar)
2016/12/17 Javascript
Vue2.0实现购物车功能
2017/06/05 Javascript
js中变量的连续赋值(实例讲解)
2017/07/08 Javascript
electron制作仿制qq聊天界面的示例代码
2018/11/26 Javascript
javascript sort()对数组中的元素进行排序详解
2019/10/13 Javascript
使用Python生成XML的方法实例
2017/03/21 Python
每天迁移MySQL历史数据到历史库Python脚本
2018/04/13 Python
python统计多维数组的行数和列数实例
2018/06/23 Python
利用Python读取txt文档的方法讲解
2018/06/23 Python
python里dict变成list实例方法
2019/06/26 Python
python3 logging日志封装实例
2020/04/08 Python
CPB肌肤之钥美国官网:Clé de Peau Beauté
2017/09/05 全球购物
写出程序把一个链表中的接点顺序倒排
2014/04/28 面试题
班子四风对照检查材料
2014/08/21 职场文书
改作风抓落实促发展心得体会
2014/09/10 职场文书
交通违章检讨书
2014/09/21 职场文书
预备党员转正思想汇报
2014/09/26 职场文书
钢琴师观后感
2015/06/12 职场文书
关于幸福的感言
2015/08/03 职场文书
优秀党员主要事迹范文
2015/11/05 职场文书
《莫泊桑拜师》教学反思
2016/02/22 职场文书
《追风筝的人》:人心中的成见是座大山,但请不忘初心
2019/11/15 职场文书
Golang 1.18 多模块Multi-Module工作区模式的新特性
2022/04/11 Golang