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 通过网页浏览器测试连接
完成配置。