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

相关文章

shell脚本批量导出redis key-value方式

《shell脚本批量导出rediskey-value方式》为避免keys全量扫描导致Redis卡顿,可先通过dump.rdb备份文件在本地恢复,再使用scan命令渐进导出key-value,通过CN... 目录1 背景2 详细步骤2.1 本地docker启动Redis2.2 shell批量导出脚本3 附录总

Oracle查询表结构建表语句索引等方式

《Oracle查询表结构建表语句索引等方式》使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.... 目录oracle查询表结构建表语句索引1.用“USER_TAB_COLUMNS”查询表结构2.用“a

Redis客户端连接机制的实现方案

《Redis客户端连接机制的实现方案》本文主要介绍了Redis客户端连接机制的实现方案,包括事件驱动模型、非阻塞I/O处理、连接池应用及配置优化,具有一定的参考价值,感兴趣的可以了解一下... 目录1. Redis连接模型概述2. 连接建立过程详解2.1 连php接初始化流程2.2 关键配置参数3. 最大连

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

Debian系和Redhat系防火墙配置方式

《Debian系和Redhat系防火墙配置方式》文章对比了Debian系UFW和Redhat系Firewalld防火墙的安装、启用禁用、端口管理、规则查看及注意事项,强调SSH端口需开放、规则持久化,... 目录Debian系UFW防火墙1. 安装2. 启用与禁用3. 基本命令4. 注意事项5. 示例配置R

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

最新Spring Security的基于内存用户认证方式

《最新SpringSecurity的基于内存用户认证方式》本文讲解SpringSecurity内存认证配置,适用于开发、测试等场景,通过代码创建用户及权限管理,支持密码加密,虽简单但不持久化,生产环... 目录1. 前言2. 因何选择内存认证?3. 基础配置实战❶ 创建Spring Security配置文件

Python获取浏览器Cookies的四种方式小结

《Python获取浏览器Cookies的四种方式小结》在进行Web应用程序测试和开发时,获取浏览器Cookies是一项重要任务,本文我们介绍四种用Python获取浏览器Cookies的方式,具有一定的... 目录什么是 Cookie?1.使用Selenium库获取浏览器Cookies2.使用浏览器开发者工具

Java获取当前时间String类型和Date类型方式

《Java获取当前时间String类型和Date类型方式》:本文主要介绍Java获取当前时间String类型和Date类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录Java获取当前时间String和Date类型String类型和Date类型输出结果总结Java获取