PHP 连接 oracle数据库(可远程)的测试操作

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/details/50240643

一.以下是基于 wampServer 的php 访问oracle数据库的操作步骤:

1、第一步:让PHP支持OCI

 首先,安装PHP的集成运行环境,网上有很多集成,我安装的是WampServer的(具体的安装方法也可以参考之前写的另一篇文章),安装好后,从安装目录中找到php.ini文件,比如我本地的路径是D:\wamp\bin\php\php5.3.3,将php.ini中的php_oci8.dll的;去掉,也就是把注释去掉,相当于可以使用php_oci8了。

2、第二步:然后wampserver运行后,将php>php extentions中将php_oci8打上勾

    【其他的集成环境其实也是可以的,比如phpStudy,我们可以直接从php扩展的选项里打勾对应的】。

3、第三步:oracle 数据库文件配置

 对于安装有Oracle客户端的PC机,可以在Oracle安装配置文件,tnsnames.ora文件,此文件路径是安装oracle的路径,比如我本机的是

F:\oracle\product\10.2.0\client_1\NETWORK\ADMIN ,所连的192.168.1.198数据库,其中的配置详情如下(如果显示 127.0.0.1 默认为本机):

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.198)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = orcl)

)

)

4、第四步:检测oci8是否配置成功

      1.一般情况下,打开localhost即能显示 phpinfo.php界面,里面即为 php 信息。可采用 “Ctrl+F”搜索“oci”,查看是否有对应的oci模块,当然有一点php基础的完全可以直接访问自己编写的文件,记得里面加入“echo phpinfo();”即可。

    2.不要高兴太早,走到这一步,至少我是查不到的对应信息的,这时可以按照网上的一些建议,把php的ext目录下的php_oci8.dll拷到system32目录下

    3.最后建议重启服务,最好是重启电脑(我在测试时发现,重启服务没用,有一次是无意中 刷新出了oci扩展,所以如果操作方法没错,我建议进行重启.)

二.代码测试远程连接 orcal 数据库(建议可用自己的oracle客户端试着是否能连接对方的服务端,以保证操作的成功率)

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2015/12/7
 * Time: 16:25
 */
echo 'ff';
//进行连接数据库的参数配置

$dbstr ="(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.11.198)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) (INSTANCE_NAME = orcl)))"; //phpinfo(); $conn = oci_connect('scott','tiger',$dbstr);//如果去掉最后一个参数或者为“ ”,默认连接本机 $stmt = oci_parse($conn, "select * from mono"); oci_execute($stmt); $nrows = oci_fetch_all($stmt, $results); if ($nrows > 0) { echo "<table border=\"1\">\n"; echo "<tr>\n"; foreach ($results as $key => $val) { echo "<th>$key</th>\n"; } echo "</tr>\n"; for ($i = 0; $i < $nrows; $i++) { echo "<tr>\n"; foreach ($results as $data) { echo "<td>$data[$i]</td>\n"; } echo "</tr>\n"; } echo "</table>\n"; } else { echo "No data found<br />\n"; } echo " $nrows Records Selected<br />\n"; oci_free_statement($stmt); oci_close($conn); ?>

(参考网友的一点说明)

两种方式和oracle数据库建立链接

    1.$conn = oci_connect('username','password',"(DEscriptION=(ADDRESS=(PROTOCOL =TCP)(HOST=192.168.1.198)(PORT = 1521))(CONNECT_DATA =(SID=orcl)))");

    2.$conn = oci_connect('username','password','192.168.1.198/orcl'); 

有的时候第一种方式不行,使用第二种,里面的几个参数分别是用户名、密码、oracle服务地址,其中orcl是服务名(但在我的机器上,后者无法访问)

另外提供一种简单的测试代码,相对而言,只是测试连接情况,更为方便:

<!DOCTYPE HTML>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>php语句结束符</title>
</head>
<body>
<?php
$dbstr ="(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.11.102)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
(INSTANCE_NAME = orcl)))";

$dbconn=oci_connect('scott','tiger',$dbstr);

if($dbconn!=false)
{
    echo "连接成功".'<br/>';
    if(OCILogOff($dbconn)==true)
    {
        echo "关闭连接成功!".'<br/>';//
    }
}
else
{
    echo "连接失败".'<br/>';
}
?>
</body>
</html>

总结提示:

        使你的php支持oracle,按照以下步骤即可:

        1.安装php环境,找一下appserv或者xampp,一键安装,很方便

        2.把php的ext目录下的php_oci8.dll拷到system32目录下

        3.修改php.ini文件中的配置,去掉  ;extention = php_oci8.dll,去掉前面的分号

        4.重启apache

注意:

1.有时候你并不会注意到的一点失误会浪费很多时间,我还要提醒的是,请记得打开oracle的服务监听!!

2.请记得作为服务端的PC机,要关闭防火墙!!

3.apache的配置文件同样重要,修改httpd.conf文件,Deny——>Allow  

<Directory />     Options FollowSymLinks     AllowOverride None     Order deny,allow #    Deny from all     Allow from all #允许所有访问     Satisfy all

</Directory>

<Directory />

...

...  #   Require local Options Indexes FollowSymLinks #   onlineoffline tag - don't remove     Order Deny,Allow     Allow from all  #   Require local

</Directory>

4.上文中一直提示的SID 或者说oracle服务器名称什么的真的好难懂,我是直接用了配置文件中所显示的名称“orcl”,这个在你安装软件时,会有一个服务名称的提醒,自己默认的orcl而已,估计些其他的名称也是可以的。网上介绍的很乱

如果不知道怎么操作,查看学习文档是最正确的选择,希望能帮到你。

有的时候第一种方式不行,使用第二种,里面的几个参数分别是用户名、密码、oracle服务地址,其中orcl是服务名。

 #   Require local

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏黑泽君的专栏

day07_Tomcat服务器与http学习笔记

    WEB,在英语中web即表示网页的意思,它用于表示Internet主机上(服务器)供外界访问的资源。

12710
来自专栏数据和云

ORACLE数据库的连接

作者介绍:姜刚,云和恩墨技术顾问,2016年开始专职从事DBA运维,ORACLE OCP,精通shell及perl编程。 本文由恩墨大讲堂143期线上分享整理而...

82860
来自专栏安富莱嵌入式技术分享

【安富莱】【RL-TCPnet网络教程】第7章 RL-TCPnet网络协议栈移植(裸机)

本章教程为大家讲解RL-TCPnet网络协议栈的裸机移植方式,学习了上个章节讲解的底层驱动接口函数之后,移植就比较容易了,主要是添加库文件、配置文件和驱动文件即...

12030
来自专栏大数据和云计算技术

HBase框架基础(一)

HBase的基础框架,将分成几个章节对HBase进行描述,不当之处还望大家批评指正。下面是了解HBase基础架构的第一部分。

19840
来自专栏大闲人柴毛毛

04Linux的磁盘分区

硬件设备在Linux中的命名 Linux中每一个设备都被当成文件,所有的设备文件都在/dev这个目录下。 设备 文件名 IDE硬盘 /dev/hd[...

40270
来自专栏Felix的技术分享

Stetho的通信原理

33830
来自专栏白驹过隙

Socket编程回顾,一个最简单服务器程序

23230
来自专栏地方网络工作室的专栏

打造前端 Deepin Linux 工作环境——配置 XAMPP 集成环境2 虚拟主机、数据库

打造前端 Deepin Linux 工作环境——配置 XAMPP 集成环境2 虚拟主机、数据库 再上一篇博文当中,我们安装上了 XAMPP 集成环境。这一篇,我...

23170
来自专栏程序猿DD

Spring Cloud构建微服务架构:分布式服务跟踪(整合logstash)【Dalston版】

通过之前的《入门示例》,我们已经为两个由SpringCloud构建的微服务项目 trace-1和 trace-2引入了Spring Cloud Sleuth的基...

43250
来自专栏西安-晁州

小程序开发知识点总结

我承认,最近比较懒了,博客也很久没更新了,太对不住自己了,做了一段时间小程序开发,总结了一些知识点,直接上菜。

26210

扫码关注云+社区

领取腾讯云代金券