Nginx下PHP连接到GBase 8s数据库 - PDO_GBASEDBT方式

2024-04-23 12:52

本文主要是介绍Nginx下PHP连接到GBase 8s数据库 - PDO_GBASEDBT方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

PHP可以通过odbc,pdo_odbc和pdo_gbasedbt三种方式连接到GBase 8s数据库,这三种方式均需要通过CSDK客户端工具。
操作系统:CentOS 7.9 x86_64

必要组件:

  • php及扩展,如php-fpm/php-odbc/php-pdo等
  • nginx服务
  • gcc/gcc-c++

数据库连接工具(CSDK)

  • GBase 8s CSDK(需含ESQLC组件)

配置前提

  • GBase 8s数据库服务器正常运行
  • GBase 8s客户端连接工具

系统环境

Linux关闭selinux(至少需要放行httpd_can_network_connect),通过yum方式安装必要的组件,包含unixODBC/unixODBC-devel,nginx和php-fpm等
CentOS7的nginx服务需要使用epel源

# 安装nginx需要使用epel源
yum -y install epel-releaseyum -y install nginx

安装php及php-fpm支持

yum -y install php php-cli php-devel php-fpm php-odbc php-soap php-pdo php-mbstring php-gd php-intl

GBase 8s客户端连接工具安装及ODBC配置

安装过程省略,指定安装目录为/opt/gbase8s-odbc-driver
需要的LIB库加入到ld.so.conf配置文件中

cat > /etc/ld.so.conf.d/gbasedbt-x86_64.conf <<!
/opt/gbase8s-odbc-driver/lib
/opt/gbase8s-odbc-dirver/lib/cli
/opt/gbase8s-odbc-driver/lib/esql
!

重新加载

ldconfig

php-fpm配置

编辑/etc/php-fpm.d/www.conf配置文件

; 修改user和group值为ngingx,因为nginx使用nginx用户及组
user = nginx
group = nginx; 打开环境变量配置参数
clear_env = no
; 使用PDO_GBASEDBT连接时需要配置以下环境变量
env[GBASEDBTDIR] = /opt/gbase8s-odbc-driver

启动php-fpm,并加入到systemctl自启动

systemctl start php-fpmsystemctl enable php-fpm

PDO_GBASEDBT集成

下载pdo_gbasedbt

wget https://gbasedbt.com/dl/PDO_GBasedbt/PDO_GBASEDBT-1.3.6.tgz

编译安装

# 解压
tar -zxvf PDO_GBASEDBT-1.3.6.tgzcd PDO_GBASEDBT-1.3.6# 使用phpize集成  
phpize# 编译,指定CSDK安装目录  
./configure --with-pdo-gbasedbt=/opt/gbase8s-odbc-drivermakemake install

将在/usr/lib64/php/modules/目录下增加pdo_gbasedbt.so
在/etc/php.d/目录下增加pdo_gbasedbt.ini配置文件,内容如下:

cat > /etc/php.d/pdo_gbasedbt.ini <<!
extension=pdo_gbasedbt.so
!

重启php-fpm服务生效

systemctl restart php-fpm

通过php -m 查看已经加载的模块

php -m | grep -i pdo_gbasedbt

nginx配置

编辑/etc/nginx/nginx.conf配置文件
在server中增加

        location ~* \.php$ {# fastcgi_pass unix:/run/php-fpm/www.sock;  fastcgi_pass 127.0.0.1:9000;include fastcgi_params;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;fastcgi_param SCRIPT_NAME $fastcgi_script_name;}

启动nginx,并加入到systemctl自启动

systemctl start nginxsystemctl enable nginx

测试数据库操作

在/usr/share/nginx/html目录下编辑测试代码pdoodbc.php

<?phpheader('Content-type:text/html;charset=utf-8');$dbh = new PDO("gbasedbt:HOST=192.168.80.70;SERV=9088;PROT=onsoctcp;SRVR=gbase01;DB=testdb;DLOC=zh_CN.utf8;CLOC=zh_CN.utf8","gbasedbt","GBase123$%");# 指定数据库连接指令echo "初始化表 tabpdogbasedbt<br>";echo "drop table tabpdogbasedbt<br>";$sql="drop table if exists tabpdogbasedbt";$dbh->exec($sql);echo "create table tabpdogbasedbt<br>";$sql="create table tabpdogbasedbt(col1 int, col2 varchar(255), primary key(col1))";$dbh->exec($sql);echo "insert into tabpdogbasedbt<br>";$sql="insert into tabpdogbasedbt values(?,?)";$stmt = $dbh->prepare($sql);$stmt->execute([1,'南大通用']);$stmt = $dbh->prepare($sql)->execute([2,'南大通用北京分公司']);echo "select from tabpdogbasedbt<br>";$sql="select * from tabpdogbasedbt";$stmt = $dbh->query($sql);$rows = $stmt->fetchAll();echo "<table><tr>";echo "<th>col1</th>";echo "<th>col2</th></tr>";foreach($rows as $row) {# 需要使用大写字段名称          echo "<tr><td>$row[0]</td>";echo "<td>$row[COL2]</td></tr>";}echo "</table>";

浏览器中访问odbc.php

初始化表 tabpdogbasedbt
drop table tabpdogbasedbt
create table tabpdogbasedbt
insert into tabpdogbasedbt
select from tabpdogbasedbt
col1	col2
1	南大通用
2	南大通用北京分公司

这篇关于Nginx下PHP连接到GBase 8s数据库 - PDO_GBASEDBT方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/928847

相关文章

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

Linux挂载linux/Windows共享目录实现方式

《Linux挂载linux/Windows共享目录实现方式》:本文主要介绍Linux挂载linux/Windows共享目录实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录文件共享协议linux环境作为服务端(NFS)在服务器端安装 NFS创建要共享的目录修改 NFS 配

Vue3视频播放组件 vue3-video-play使用方式

《Vue3视频播放组件vue3-video-play使用方式》vue3-video-play是Vue3的视频播放组件,基于原生video标签开发,支持MP4和HLS流,提供全局/局部引入方式,可监听... 目录一、安装二、全局引入三、局部引入四、基本使用五、事件监听六、播放 HLS 流七、更多功能总结在 v

Java发送SNMP至交换机获取交换机状态实现方式

《Java发送SNMP至交换机获取交换机状态实现方式》文章介绍使用SNMP4J库(2.7.0)通过RCF1213-MIB协议获取交换机单/多路状态,需开启SNMP支持,重点对比SNMPv1、v2c、v... 目录交换机协议SNMP库获取交换机单路状态获取交换机多路状态总结交换机协议这里使用的交换机协议为常

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni