百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

lnmp环境下连接oracle数据库php连接oracle

yuyutoo 2024-10-17 16:59 4 浏览 0 评论

lnmp环境下连接oracle数据库 php连接oracle环境搭建 linux系统php oci 和 pdo_oci 安装

lnmp环境下提供了完整的php连接mysql等数据库的连接,对于oracle数据库则必须要自己从头开始安装环境和配置相关依赖,本文对linux下php连接oracle提供完整的操作流程,建议收藏。

准备工作

1、安装完毕的linux服务器,不知道怎么安装可以查看我的之前的文章

2、安装好lnmp环境,并且能够正常启动

本次安装需要

1、oracle客户端

2、oci8扩展

3、pdo_oci扩展

一、 准备文件

1) oracle客户端rpm包,http://www.oracle.com/technology/tech/oci/instantclient/instantclient.html 下载

# oracle-instantclient11.1-basic-xxxxx.x86_64.rpm

# oracle-instantclient11.1-devel-xxxxx.x86_64.rpm

devel包

(文中的oracle版本号用xxxxx代替)

2) pdo_oci 与 oci8 包

进入自己的php源目录扩展文件

或者直接下载php的完整安装包

http://cn.php.net/releases/ 网页下找到自己服务器的php版本,下载后tar解压(本人的是php5.3.10)

解压后,包内php5.3.10/ext/文件夹下含有oci与pdo_oci的扩展源码

注意线程安全版本需要与已安装的php版本相一致

二、安装oracle客户端

# rpm -ivh oracle-intstant*.rpm

安装完成后会生成这些文件夹,后面安装要使用

/usr/lib/oracle

/usr/share/oracle

/usr/include/oracle

三、配置oracle (这一步做,先跳过)

1) 添加动态装载器

修改/etc/ld.so.conf文件或在ld.so.conf.d文件夹下添加oracle-x86_64.conf文件,

写入如下你安装的oracle客户端的lib路径

/usr/lib/oracle/xxxxx/client64/lib/

2) 以免pdo_oci对oracle11支持不足,做一个假的ln,骗过编译

# ln -s /usr/include/oracle/xxxxx /usr/include/oracle/10.2.0.1

# ln -s /usr/lib/oracle/xxxxx /usr/lib/oracle/10.2.0.1

3) 修改/etc/profile文件,最后加入如下内容:

(这一步没有做)

export ORACLE_HOME=/usr/lib/oracle/11.1/client64/

export LD_LIBRARY_PATH=/usr/lib/oracle/11.1/client64:$LD_LIBRARY_PATH

export NLS_LANG="AMERICAN_AMERICA.AL32UTF8" //具体字符集,请查看你的oracle服务端sql

保存后出来执行

# source /etc/profile //立即生效

4)安装oci 和 pdo_oci

安装oci

# cd php-5.3.10/ext/oci/

#/usr/local/php/bin/phpize CFLAGS=”-I/usr/lib/oracle/11.1/client” CXXFLAGS=”-I/usr/lib/oracle/11.1/client”

使用phpize准备 PHP 外挂模块的编译环境,会根据指定的环境变量生成编译时需要的makefile,

phpize是属于php-devel的内容,所以centos下只要运行yum install php-devel进行安装即可

(注意:/usr/local/php/bin/phpize 为我的php目录,不同则需改之;)

(如果是64位的系统,client改成client64)

#./configure –with-php-config=/usr/local/php/bin/php-config –with-oci8=/usr/lib/oracle/11.1/client

注意要先确保/usr/local/php/bin/php-config存在。

如果你的php安装路径不是默认的,要改。

#make

#make install

需要强调的是make的时候会报错,显示各种找不到库文件,需要对makefile文件进行修改加入oralce的运行库地址

打开makefile,寻找INCLUDE,形式如下:

INCLUDES = -I/usr/local/php/include/php -I/usr/include/oracle/10.2.0.3/client

然后在末尾加上=”-I/usr/lib/oracle/11.1/client,然后重新make就会成功了。

5)编辑php.ini

然后它告诉你一个目录,你把该目录下的oci8.so拷贝到你php.ini中的extension_dir指向的目录中

修改PHP.ini(/usr/local/php/etc/php.ini)

增加一行:

extension = “oci8.so”

注意:要确保/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/ 该目录下有oci8.so文件

6)重启apache,让oci生效

安装pdo_oci

1)进入文件夹

# cd php-5.3.10/ext/pdo_oci/

2) 用phpize来扩展,文件夹内执行: phpize

[root@jinniu-test3 pdo_oci]# phpize

Configuring for:

PHP Api Version:     20090626

Zend Module Api No:    20090626

Zend Extension Api No:  220090626

(还有其他安装方法:参考

/usr/local/php/bin/pear install PDO_OCI-1.0.tgz

这时pdo_oci.so安装到了/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/pdo_oci.so

3) 编译和安装

# ./configure --with-php-config=/usr/bin/php-config --with-pdo-oci=/usr/lib/oracle/11.1/client64

# make && make install

这里同样注意,如果发生错误,则修改Makefile,

在其中的INCLUDES继续添加以下内容(根据自己的路径修改):

-I/usr/include/oracle/12.1/client64 -I/usr/lib/oracle/12.1/client64

4)修改php.ini

复制生成的pdo_oci到/usr/local/php/include/php/ext/pdo/目录下

  cp /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/pdo_oci.so  /usr/local/php/include/php/ext/pdo/

加入pdo_oci.so到php.ini

编辑/etc/php.ini或/usr/local/php/lib/php.ini

添加extension=pdo_oci.so即可


5)重启apache

这里再记录一个错误,php.ini 增加了extension=pdo_oci.so后,重启apache报错

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/pdo_oci.so' - /usr/lib64/php/modules/pdo_oci.so: undefined symbol: php_pdo_unregister_driver in Unknown on line 0

解决:注释掉 extension=pdo_oci.so

在 /etc/php.d 中新建一个pdo_oci.ini的文件,内容写上 extension=pdo_oci.so

重启apache ,成功加载

(可能原因:这个php和pdo扩展都是用yum安装的,所以pdo_oci要到/etc/php.d 寻找其它扩展文件)

查看oci和pdo_oci.so 安装情况

创建一个php文件,内容如下


  phpinfo();

  ?>

浏览器打开这个php网页,有如下显示即安装成功

oci8

OCI8 Support    enabled

Version 1.4.10

Revision    $Id: 44bfa713983a99b3e59477f6532e5fb51b6dee94 $

Active Persistent Connections   0

Active Connections  0

Oracle Run-time Client Library Version  11.2.0.3.0

Oracle Instant Client Version   11.2

Temporary Lob support   enabled

Collections support enabled

 

PDO_OCI

PDO Driver for OCI 8 and later  enabled

相关推荐

史上最全的浏览器兼容性问题和解决方案

微信ID:WEB_wysj(点击关注)◎◎◎◎◎◎◎◎◎一┳═┻︻▄(页底留言开放,欢迎来吐槽)●●●...

平面设计基础知识_平面设计基础知识实验收获与总结
平面设计基础知识_平面设计基础知识实验收获与总结

CSS构造颜色,背景与图像1.使用span更好的控制文本中局部区域的文本:文本;2.使用display属性提供区块转变:display:inline(是内联的...

2025-02-21 16:01 yuyutoo

写作排版简单三步就行-工具篇_作文排版模板

和我们工作中日常word排版内部交流不同,这篇教程介绍的写作排版主要是用于“微信公众号、头条号”网络展示。写作展现的是我的思考,排版是让写作在网格上更好地展现。在写作上花费时间是有累积复利优势的,在排...

写一个2048的游戏_2048小游戏功能实现

1.创建HTML文件1.打开一个文本编辑器,例如Notepad++、SublimeText、VisualStudioCode等。2.将以下HTML代码复制并粘贴到文本编辑器中:html...

今天你穿“短袖”了吗?青岛最高23℃!接下来几天气温更刺激……

  最近的天气暖和得让很多小伙伴们喊“热”!!!  昨天的气温到底升得有多高呢?你家有没有榜上有名?...

CSS不规则卡片,纯CSS制作优惠券样式,CSS实现锯齿样式

之前也有写过CSS优惠券样式《CSS3径向渐变实现优惠券波浪造型》,这次再来温习一遍,并且将更为详细的讲解,从布局到具体样式说明,最后定义CSS变量,自定义主题颜色。布局...

柠檬科技肖勃飞:大数据风控助力信用社会建设

...

你的自我界限够强大吗?_你的自我界限够强大吗英文

我的结果:A、该设立新的界限...

行内元素与块级元素,以及区别_行内元素和块级元素有什么区别?

行内元素与块级元素首先,CSS规范规定,每个元素都有display属性,确定该元素的类型,每个元素都有默认的display值,分别为块级(block)、行内(inline)。块级元素:(以下列举比较常...

让“成都速度”跑得潇潇洒洒,地上地下共享轨交繁华
让“成都速度”跑得潇潇洒洒,地上地下共享轨交繁华

去年的两会期间,习近平总书记在参加人大会议四川代表团审议时,对治蜀兴川提出了明确要求,指明了前行方向,并带来了“祝四川人民的生活越来越安逸”的美好祝福。又是一年...

2025-02-21 16:00 yuyutoo

今年国家综合性消防救援队伍计划招录消防员15000名

记者24日从应急管理部获悉,国家综合性消防救援队伍2023年消防员招录工作已正式启动。今年共计划招录消防员15000名,其中高校应届毕业生5000名、退役士兵5000名、社会青年5000名。本次招录的...

一起盘点最新 Chrome v133 的5大主流特性 ?

1.CSS的高级attr()方法CSSattr()函数是CSSLevel5中用于检索DOM元素的属性值并将其用于CSS属性值,类似于var()函数替换自定义属性值的方式。...

竞走团体世锦赛5月太仓举行 世界冠军杨家玉担任形象大使

style="text-align:center;"data-mce-style="text-align:...

学物理能做什么?_学物理能做什么 卢昌海

作者:曹则贤中国科学院物理研究所原标题:《物理学:ASourceofPowerforMan》在2006年中央电视台《对话》栏目的某期节目中,主持人问过我一个的问题:“学物理的人,如果日后不...

你不知道的关于这只眯眼兔的6个小秘密
你不知道的关于这只眯眼兔的6个小秘密

在你们忙着给熊本君做表情包的时候,要知道,最先在网络上引起轰动的可是这只脸上只有两条缝的兔子——兔斯基。今年,它更是迎来了自己的10岁生日。①关于德艺双馨“老艺...

2025-02-21 16:00 yuyutoo

取消回复欢迎 发表评论: