文档章节

linux下php连接oracle教程

吾爱
 吾爱
发布于 2015/09/25 12:58
字数 748
阅读 511
收藏 3

安装篇


首先,PHP支持oracle我首先想到的是pdo相关驱动,看了一下还真有,叫做pdo_oci。


但还依赖 oracle instant client ,这个要到oracle官网下载:

http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html


选择对应系统的版本,点击进去,这里我的是64位linux,所以选择 Instant Client for Linux x86-64 ,之后会让你同意一个协议,叫做  Accept License Agreement ,勾选后就可以下载了。


值得一提的是,如果要通过wget方式下载,你需要注册一个oracle账号并登陆,然后先在自己电脑上点击下载,得到一个实际url(包含一个token),复制这个url去服务器上wget,直接wget网页里的url是下不了的,切记。


需要下载两个包:

oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm

oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm


版本号可能不一样,看下关键词:basic 和 devel即可。


这两个包下载到服务器上,分别安装:

rpm -ivh oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
rpm -ivh oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm


因为是64位系统,为了防止编译php扩展出问题,将刚刚安装好的两个目录做个软连接

ln -s /usr/lib/oracle/12.1/client64 /usr/lib/oracle/12.1/client
ln -s /usr/include/oracle/12.1/client64 /usr/include/oracle/12.1/client

ok,下一步就开始安装 pdo_oci扩展。


首先你应该有一份php源码,如果没有,请到官网下载一份对应版本的。

假设我的源码在 /home/src/php56

cd /home/src/php56
cd ext/pdo_oci
phpize #注释:如果没有这个命令你需要找到php安装目录的bin/,如/usr/local/php/bin/phpize
./configure --with-pdo-oci=instantclient,/usr,12.1 --with-php-config=/usr/bin/php-config
#注:12.1需要对应上面安装的oracle instant的版本号,和oracle/12.1的数字一样,--with-php-config是和phpize同理,在php安装目录里的bin目录下,这两个要改成自己实际情况的。
make && make install

如果顺利的话,编译成功后,修改 php.ini ,在文件末尾空两行,加上

extension=pdo_oci.so;

好了,通过

php -m

命令看一下有没有PDO_OCI这一行,有的话就是ok了。

web服务记得要重启apache或php-fpm。


使用篇

使用过程跟pdo差不多,我对oracle还不是很了解,但是也遇到一个故障,那就是无法连接oracle。

一开始通过下面的方式连接:

$pdh = new PDO('oci:dbname=IP地址:端口号/SID',用户名,密码);

报错:

SQLSTATE[HY000]: pdo_oci_handle_factory: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

后来在statckoverflow上找到办法,改成下面这种连接方式:

$tns = "  
(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 你的IP)(PORT = 端口号))
    )
    (CONNECT_DATA =
      (SID = 你的oracle数据库的SID)
    )
  )
       ";
$db_username = "youname";
$db_password = "yourpassword";
try{
    $conn = new PDO("oci:dbname=".$tns,$db_username,$db_password);
}catch(PDOException $e){
    echo ($e->getMessage());
}

这样就没问题了。



本文转载自:http://www.ekan001.com/articles/68

吾爱
粉丝 143
博文 272
码字总数 91680
作品 0
后端工程师
私信 提问
LCP 1.0.0 版正式发布,Linux 连接池

Linux 连接池 LCP 1.0.0 正式发布,请大家多多关注,多语言,多服务,经过大量测试,效果非常明显,对于无状态的连接速度提升尤其明显。 LCP是Linux Connection Pool的简写,是基于Linux模块...

xilongtao
2015/10/27
2.1K
15
RedHat6.6 安装 oracle11gR2教程

新公司用的是oracle数据库,所以利用下班时间在虚拟机上试着装了下oracle 11gR2 。查了官方的文档,头尾发了三天我的效率也是有够慢的 下面是我整理的过程: Oracle 11g release2 linux x86-...

zhengminghao
2018/06/29
0
0
史上最详细最全的Linux上安装Oracle的教程-centos7-humf

转载来源:https://blog.csdn.net/qq_22260641/article/details/76182447 一、安装Oracle前准备 1.创建运行oracle数据库的系统用户和用户组 [humf@localhost ~]$ su root  #切换到rootPas...

神奇的蜗牛
2018/07/31
0
0
实用的网站

此博客网站有可能过期 博主:董林杰 网络工程师视频 http://www.51zxw.net/list.aspx?cid=417 ABCDOCKER网站 https://www.abcdocker.com/ 徐亮伟网站 http://www.xuliangwei.com/ 安装cento...

蓝叶子Sheep
2017/08/25
0
0
pdo oci 连接oracle

环境 主机linux [devtac@test_1 ~]$ lsb_release -aLSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-......

tacg
2014/09/24
189
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
12
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
12
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
11
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部