首页 > 数据库 >Linux系统,使用PHP连接ORACLE数据库

Linux系统,使用PHP连接ORACLE数据库

时间:2023-05-25 10:47:08浏览次数:72  
标签:OCI 11.2 PDO oracle usr Linux ORACLE PHP 安装


首先安装ORACLE的InstantClient环境:在这里下载

因为我需要连接11.2.0.4.0版本的ORACLE数据库,所以选取下载了basic-11.2.0.4.0-1.x86_64.rpm和devel-11.2.0.4.0-1.x86_64.rpm,

使用如下命令安装:

rpm -ivh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
rpm -ivh oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm

 

64位系统需要创建32位对应的软链接,原因不明,但经实测如果不创建、后续编译确实会出问题:

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

 

接下来创建对应环境变量:

vim /etc/profile.d/oracle.sh
export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib

保存后执行source使更改生效:

source /etc/profile.d/oracle.sh

 

使用hostname命令查看当前系统主机名,并将主机名加入hosts文件:

vim /etc/hosts

# 加入这一行
127.0.0.1 主机名

 


 

接下来根据你要使用的数据库连接方式选择安装对应的PHP扩展,

如果要使用PDO连接,就安装PDO_OCI;如果要使用oci_connect函数链接,就安装OCI8。

以下逐一说明安装步骤。

 


 

安装PDO_OCI

首先下载并解压源码包:

wget https://pecl.php.net/get/PDO_OCI-1.0.tgz
tar -xvf PDO_OCI-1.0.tgz
cd PDO_OCI-1.0

 

这玩意1.0版本后再也没更新过,默认是不支持11.2版本的,需要按以下操作修改源码:

vim config.m4

#在第10行左右,有很多elif,在其中添加如下语句
elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.11.2; then
  PDO_OCI_VERSION=11.2

#转到第100行往下找,找到格式与下方代码相似的部分并添加如下语句
11.2)
  PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD)
  ;;

编辑完成后保存即可。

 

先尝试编译安装,如果过程中报function_entry相关的错误则进行如下操作:

vim pdo_oci.c

将34行的function_entry修改为zend_function_entry

 

开始编译安装:

phpize
./configure --with-pdo-oci=instantclient,/usr,11.2
make
make install

 

安装完成后修改php.ini文件中添加一行:

extension=pdo_oci.so

 

重启APACHE即可。

 

可以使用phpinfo()验证安装,出现以下内容则代表安装成功:

 


 

安装OCI8
首先下载并解压源码包:

wget https://pecl.php.net/get/oci8-2.0.12.tgz
tar -xvf oci8-2.0.12.tgz
cd oci8-2.0.12

这一步是基于我使用的PHP版本选择了2.0.12,你可以在这里挑选合适自己的版本。

 

 然后直接编译安装:

phpize
./configure --with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client64/lib
make
make install

 

安装完成后修改php.ini文件中添加一行:

extension=oci8.so

 

重启APACHE即可。

 

可以使用phpinfo()验证安装,出现以下内容则代表安装成功:

 

标签:OCI,11.2,PDO,oracle,usr,Linux,ORACLE,PHP,安装
From: https://www.cnblogs.com/XiaoMingBlingBling/p/17430449.html

相关文章

  • 新手怎么玩转Linux
    Linux是一个非常强大、灵活和可定制的操作系统,这使得它成为了程序员的首选操作系统之一。程序员喜欢使用Linux的原因有以下几点:开源、稳定性、安全性、命令行界面、社区支持。那么新手改如何玩转Linux呢?跟着我一起来看看吧。以下是对新手的一些建议:1、了解基本的Linux命令:Linux......
  • UE4 AirSim Windows项目交叉编译Linux包
    1、从Linux环境下AirSim文件夹导入相关.a库至对应路径 2、项目插件中禁用VR相关插件libopenvr_api.soissuewhenbuildingprojectagainstUE4.25·Issue#2889·microsoft/AirSim(github.com) ......
  • 【操作系统入门到成神系列 七】Linux 内核 VS Window 内核
    ......
  • linux命令全部失效+无法登录 极限操作
    背景在kali上大概用了有两个月,这两个月可以说喜忧参半喜:kali系统优化的很好,不管是开机关机还是运行应用程序,都非常快,非常流畅,配合占用超小的xcfe桌面,爽飞忧:由于我是直接安装在物理机上的,原本是打算做开发和逆向用,但这个系统做开发和逆向,bug实在是太多,而且缺少很多必要的so文件(......
  • Linux大页会立即占用分配内存
     Linux大页会立即占用分配内存 系统参数vm.nr_hugepages设置生效后,会立即分配对应内存。如下:[root@dev-app80~]#sysctl-qvm.nr_hugepagesvm.nr_hugepages=0[root@dev-app80~]#free-mtotalusedfreesharedbuff/cachea......
  • 走进Linux世界,学习Linux系统的必备指南
    随着计算机技术的不断发展,Linux操作系统已成为IT行业中备受关注的操作系统之一。Linux以其安全性、稳定性和开放性,受到了广泛的认可和欢迎。学习Linux系统对于IT行业的从业者来说是非常重要的。但是,对于初学者来说,学习Linux可能会感到有些困难。 所以,我今天我打算给初学者们答......
  • 宝塔面板登录 phpMyAdmin 提示服务器和客户端上指示的HTTPS之间不匹配
    宝塔面板登录phpMyAdmin提示服务器和客户端上指示的HTTPS之间不匹配https://www.niuqi360.com/btpanel/mismatch-between-https-indicated-on-server-and-client/......
  • linux设备驱动之字符设备驱动
    这可能听起来很蠢,但在图书馆,教室或实验室中的计算机-或者你的朋友的电话-它们不是你的。即使是云或云服务通常也只是别人的计算机。一般来说,将你不拥有的任何设备视为属于坏人所有,换句话说,他们想要你的数据用于邪恶用途。以下是一些简单的方法,可以增加你的数据安全性来应对不法......
  • kafka.php
    setRebalanceCb(function(RdKafka\KafkaConsumer$kafka,$err,array$partitions=null){switch($err){caseRD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS://echo"Assign:";//var_dump($partitions);......
  • es.php
    setHosts(['192.168.133.131'])->build(); //如果es设置了密码 //$es=\Elasticsearch\ClientBuilder::create()->setHosts(['http://username:[email protected]:9200'])->build() return$es;}functiongetIndicesSetting(){ $......