• 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-release
    
    yum -y install nginx
    
    • 1
    • 2
    • 3
    • 4

    安装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
    
    • 1

    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
    !
    
    • 1
    • 2
    • 3
    • 4
    • 5

    重新加载

    ldconfig
    
    • 1

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

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

    systemctl start php-fpm
    
    systemctl enable php-fpm
    
    • 1
    • 2
    • 3

    PDO_GBASEDBT集成

    下载pdo_gbasedbt

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

    编译安装

    # 解压
    tar -zxvf PDO_GBASEDBT-1.3.6.tgz
    
    cd PDO_GBASEDBT-1.3.6
    
    # 使用phpize集成  
    phpize
    
    # 编译,指定CSDK安装目录  
    ./configure --with-pdo-gbasedbt=/opt/gbase8s-odbc-driver
    
    make
    
    make install
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

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

    cat > /etc/php.d/pdo_gbasedbt.ini <<!
    extension=pdo_gbasedbt.so
    !
    
    • 1
    • 2
    • 3

    重启php-fpm服务生效

    systemctl restart php-fpm
    
    • 1

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

    php -m | grep -i pdo_gbasedbt
    
    • 1

    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;
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

    systemctl start nginx
    
    systemctl enable nginx
    
    • 1
    • 2
    • 3

    测试数据库操作

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

    
        header('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
    "
    ; echo "drop table tabpdogbasedbt
    "
    ; $sql="drop table if exists tabpdogbasedbt"; $dbh->exec($sql); echo "create table tabpdogbasedbt
    "
    ; $sql="create table tabpdogbasedbt(col1 int, col2 varchar(255), primary key(col1))"; $dbh->exec($sql); echo "insert into tabpdogbasedbt
    "
    ; $sql="insert into tabpdogbasedbt values(?,?)"; $stmt = $dbh->prepare($sql); $stmt->execute([1,'南大通用']); $stmt = $dbh->prepare($sql)->execute([2,'南大通用北京分公司']); echo "select from tabpdogbasedbt
    "
    ; $sql="select * from tabpdogbasedbt"; $stmt = $dbh->query($sql); $rows = $stmt->fetchAll(); echo "";echo"";echo"";foreach($rowsas$row){# 需要使用大写字段名称 echo"";echo"";}echo"
    col1 col2
    $row[0] $row[COL2]
    "
    ;
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    浏览器中访问odbc.php

    初始化表 tabpdogbasedbt
    drop table tabpdogbasedbt
    create table tabpdogbasedbt
    insert into tabpdogbasedbt
    select from tabpdogbasedbt
    col1	col2
    1	南大通用
    2	南大通用北京分公司
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 相关阅读:
    idea(第一次)启动项目,端口变成了8080
    uniapp 实现路线规划
    数据分析神经网络模型图,神经网络模型数据处理
    产品团队的需求验证和确认
    Scalable Exact Inference in Multi-Output Gaussian Processes
    [DevOps云实践] 彻底删除AWS云资源
    FaceChain应用生态爆发?无限可能的人物应用等你加入探索!
    从意义中恢复,而不是从数据包中恢复
    headscale的部署方法和使用教程
    拼多多anti-token 字段加解密学习分析
  • 原文地址:https://blog.csdn.net/liaosnet/article/details/138073622