GBase 8s数据库连接 - PHP PDO_GBASEDBT

Linux下通过PHP(pdo)连接到GBase 8s数据库
操作系统:RHEL 6U9 64bit
必需组件:

unixODBC: unix下的odbc
php: 操作系统自带的php
php-devel: php开发组件,包含phpize工具
php-pdo: php-pdo组件
httpd: apache httpd服务器
automake: 编译组件
autoconf: 编译组件
gcc: 编译组件,编译器

注1:php-devel一般位于安装光盘的dvd2上
注2:若编译过程中涉及到其他组件,需先安装后再继续

数据库连接工具:

GBase 8s CSDK

PDO_GBASEDBT:
PDO_GBASEDBT-1.3.3.tgz

PDO_GBASEDBT-1.3.3: 由PDO_INFORMIX修改而来

配置前提

1,GBase 8s 数据库服务器已经正常启动
2,GBase 8s 客户端连接工具已经安装

1,系统环境确认

1.1 automake、autoconf、gcc、php、php-pdo、php-devel、httpd及unixODBC版本

Linux下root用户通过rpm确认 automake、autoconf、gcc、php、php-pdo、php-devel、httpd、unixODBC均已经安装,如下:

[root@rhel6u9 ~]# rpm -qa automake autoconf gcc php php-pdo php-devel httpd unixODBC
php-pdo-5.3.3-49.el6.x86_64
automake-1.11.1-4.el6.noarch
autoconf-2.63-5.1.el6.noarch
httpd-2.2.15-59.el6.x86_64
php-devel-5.3.3-49.el6.x86_64
gcc-4.4.7-18.el6.x86_64
unixODBC-2.2.14-14.el6.x86_64
php-5.3.3-49.el6.x86_64

1.2 GBase 8s CSDK已经安装

Linux下gbasedbt用户通过esql -V命令确认GBase 8s CSDK已经安装,如下:

[gbasedbt@rhel6u9 ~]$ esql -V
GBase CSDK Version 4.10, GBASE-ESQL Version 4.10.FC4G1_2.0.1A2_2
Software Serial Number AAA#B000000

确认CSDK安装目录下的数据库sqlhosts配置文件正确配置。

2,pdo_gbasedbt集成编译配置

2.1 用户环境变量中增加GBASEDBTDIR,LD_LIBRARY_PATH

export GBASEDBTDIR=/opt/gbasedbt
export LD_LIBRARY_PATH=$GBASEDBTDIR/lib:$GBASEDBTDIR/lib/cli:$GBASEDBTDIR/lib/esql:$LD_LIBRARY_PATH

export DB_LOCALE=zh_CN.utf8
export CLIENT_LOCALE=zh_CN.utf8
export GL_USEGLU=1

2.2 php集成pdo_gbasedbt步骤

2.2.1 上传并解压PDO_GBASEDBT包
2.2.2 通过php-config获取配置两个信息:php-config路径,extension-dir目录
[root@rhel6u9 PDO_GBASEDBT-1.3.3]# php-config
Usage: /usr/bin/php-config [OPTION]
Options:
  --prefix            [/usr]
  --includes          [-I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib]
  --ldflags           []
  --libs              [-lcrypt   -lcrypt -ledit -lncurses -lgmp -lbz2 -lz -lpcre -lm -ldl -lnsl  -lxml2 -lz -lm -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lssl -lcrypto -lssl -lcrypto -lxml2 -lz -lm -lcrypt -lxml2 -lz -lm -lcrypt ]
  --extension-dir     [/usr/lib64/php/modules]
  --include-dir       [/usr/include/php]
  --php-binary        [/usr/bin/php]
  --php-sapis         [cli cgi]
2.2.3 使用phpize扩展php动态模块pdo_gbasedbt
[root@rhel6u9 PDO_GBASEDBT-1.3.3]# phpize
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626
2.2.4 配置安装pdo_gbasedbt

其中prefix指向前面获取的extension-dir目录
with-php-config指向前面获取的php-config路径
with-pdo-gbasedbt指向GBASEDBTDIR

[root@rhel6u9 PDO_GBASEDBT-1.3.3]# ./configure --prefix=/usr/lib64/php/modules/ --with-php-config=/usr/bin/php-config --with-pdo-gbasedbt=/opt/gbasedbt
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for a sed that does not truncate output... /bin/sed
checking for cc... cc
checking for C compiler default output file name... a.out
...省略...
configure: creating ./config.status
config.status: creating config.h
config.status: executing libtool commands
[root@rhel6u9 PDO_GBASEDBT-1.3.3]# make 
[root@rhel6u9 PDO_GBASEDBT-1.3.3]# make install
Installing shared extensions:     /usr/lib64/php/modules/
2.2.5 检查pdo_gbasedbt.so已经正常生成
[root@rhel6u9 PDO_GBASEDBT-1.3.3]# ll /usr/lib64/php/modules/pdo_gbasedbt.so
-rwxr-xr-x 1 root root 144857 Apr 17 19:21 /usr/lib64/php/modules/pdo_gbasedbt.so

3,httpd及php配置

3.1 在/etc/php.d/目录下增加pdo_gbasedbt.ini配置文件,内容如下:

extension=pdo_gbasedbt.so

3.2 将环境变量增加到/etc/sysconfig/httpd

GBASEDBTDIR=/opt/gbasedbt
# 以下为数据库使用字符集
DB_LOCALE=zh_CN.utf8
CLIENT_LOCALE=zh_CN.utf8
GL_USEGLU=1

# LIB库
LD_LIBRARY_PATH=$GBASEDBTDIR/lib:$GBASEDBTDIR/lib/cli:$GBASEDBTDIR/lib/esql:$LD_LIBRARY_PATH

通过apachectl restart重启apache http服务器,使配置生效

4, 测试通过php odbc连接到GBase 8s数据库

4.1 在/var/www/html/下创建测试连接的pdo.php,内容如下

<?php
    $dbh = new PDO("gbasedbt:host=192.168.80.163; service=9088; database=testdb; server=gbase01; protocol=onsoctcp","gbasedbt","GBase123");
    # 指定数据库连接指令

    $sth1 = $dbh->prepare("SELECT tabid,tabname FROM systables limit 10");
    $sth1->execute();

    echo "<table><tr>pdo_gbasedbt</tr><tr>";
    echo "<th>ID</th>";
    echo "<th>表名</th></tr>";

    while( $row = $sth1->fetch() )
    {
        $col1=$row["TABID"];
        $col2=$row["TABNAME"];
        echo "<tr><td>$col1</td>";
        echo "<td>$col2</td></tr>";
    }

    $dbh = null;

    echo "</table>";
4.2 通过php -e odbc.php测试连接
[root@rhel6u9 html]# php -e pdo.php
<table><tr>pdo_gbasedbt</tr><tr><th>ID</th><th>表名</th></tr><tr><td>1</td><td>systables</td></tr><tr><td>2</td><td>syscolumns</td></tr><tr><td>3</td><td>sysindices</td></tr><tr><td>4</td><td>systabauth</td></tr><tr><td>5</td><td>syscolauth</td></tr><tr><td>6</td><td>sysviews</td></tr><tr><td>7</td><td>sysusers</td></tr><tr><td>8</td><td>sysdepend</td></tr><tr><td>9</td><td>syssynonyms</td></tr><tr><td>10</td><td>syssyntable</td></tr></table>
4.3 通过网页浏览器测试连接

pdo_gbasedbt

完成配置。

标签: gbase 8s, pdo_gbasedbt, pdo, php pdo

添加新评论