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(5) 类和对象
Feb 16 PHP
php5 apache 2.2 webservice 创建与配置(java)
Jan 27 PHP
php读取纯真ip数据库使用示例
Jan 26 PHP
PHP+jQuery+Ajax实现用户登录与退出
Apr 27 PHP
PHP生成各种常见验证码和Ajax验证过程
Jan 10 PHP
php基于curl主动推送最新内容给百度收录的方法
Oct 14 PHP
PHP中list方法用法示例
Dec 01 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
Jul 27 PHP
safari下载文件自动加了html后缀问题
Nov 09 PHP
php实现微信分享朋友链接功能
Feb 18 PHP
PHP中的empty、isset、isnull的区别与使用实例
Mar 22 PHP
PHP解密支付宝小程序的加密数据、手机号的示例代码
Feb 26 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 escape URL编码
2008/12/10 PHP
php面向对象全攻略 (十五) 多态的应用
2009/09/30 PHP
php安装xdebug/php安装pear/phpunit详解步骤(图)
2013/12/22 PHP
destoon整合UCenter图文教程
2014/06/21 PHP
PHP使用array_multisort对多个数组或多维数组进行排序
2014/12/16 PHP
php检查是否是ajax请求的方法
2015/04/16 PHP
JavaScript使用cookie
2007/02/02 Javascript
javascript 24小时弹出一次的代码(利用cookies)
2009/09/03 Javascript
关于IE BUG与字符串截取substr的解决办法
2013/04/10 Javascript
最好用的省市二级联动 原生js实现你值得拥有
2013/09/22 Javascript
jQuery实现流动虚线框的方法
2015/01/29 Javascript
JS+CSS模拟可以无刷新显示内容的留言板实例
2015/03/03 Javascript
jQuery实现预加载图片的方法
2015/03/17 Javascript
JavaScritp添加url参数并将参数加入到url中及更改url参数的方法
2015/10/26 Javascript
jQuery中判断对象是否存在的方法汇总
2016/02/24 Javascript
Ajax分页插件Pagination从前台jQuery到后端java总结
2016/07/22 Javascript
jQuery实现隔行变色的方法分析(对比原生JS)
2016/11/18 Javascript
微信小程序组件 marquee实例详解
2017/06/23 Javascript
原生js实现自定义消息提示框
2020/11/19 Javascript
python解析html开发库pyquery使用方法
2014/02/07 Python
微信跳一跳游戏python脚本
2020/04/01 Python
Python之使用adb shell命令启动应用的方法详解
2019/01/07 Python
Opencv-Python图像透视变换cv2.warpPerspective的示例
2019/04/11 Python
详解Python字符串切片
2019/05/20 Python
python多进程读图提取特征存npy
2019/05/21 Python
Django如何使用asyncio协程和ThreadPoolExecutor多线程
2020/10/12 Python
Russell Stover巧克力官方网站:美国领先的精美巧克力制造商
2016/11/27 全球购物
俄罗斯卫浴采暖及维修用品超级市场:Dkrussia
2020/05/12 全球购物
农民工工资发放承诺书
2014/03/31 职场文书
建筑专业毕业生求职信
2014/09/30 职场文书
人间正道是沧桑观后感
2015/06/15 职场文书
驻村工作简报
2015/07/20 职场文书
python中__slots__节约内存的具体做法
2021/07/04 Python
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
2022/06/01 Servers
Windows10安装Apache2.4的方法步骤
2022/06/25 Servers
Docker容器harbor私有仓库部署和管理
2022/08/05 Servers