需要知道1)是否有人成功建立了连接,2)使用PHP查询远程DB2服务器,3)如果是这样的话?
我安装了db2的PECL扩展
[db2]
extension=ibm_db2.so
但无法弄清楚如何使用它。我找到的所有示例都使用ODBC样式dsn,我不想使用ODBC。
更新:根据此处的文档(http://www.redbooks.ibm.com/abstracts/sg247218.html),名义上可以使用ibm_db2驱动程序(没有ODBC),但其中描述的方法不完整或过时。
答案 0 :(得分:4)
使用PHP只有一个选项:ODBC。
以下是有关如何在Ubuntu上连接到DB2 for i(在IBM i上)的分步说明:
从IBM下载免费的iSeriesAccess-6.1.0-1.2.i386.rpm文件(您必须创建一个免费帐户才能获得它)
将RPM文件转换为Ubuntu理解的内容:sudo alien iSeriesAccess-6.1.0-1.2.i386.rpm
安装生成的.deb:sudo dpkg -i iseriesaccess_6.1.0-2.2_i386.deb
将已安装的iSeries库复制到Ubuntu所期望的位置:sudo cp /opt/ibm/iSeriesAccess/lib/* /usr/lib
编辑/etc/odbc.ini文件以包含:
[primary]
Description = primary
Driver = iSeries Access ODBC Driver
System = IP_ADDRESS
UserID = USERNAME
Password = PASSWORD
Naming = 0
DefaultLibraries = QGPL
Database = XXXXXXXXXX
ConnectionType = 0
CommitMode = 2
ExtendedDynamic = 0
DefaultPkgLibrary = QGPL
DefaultPackage = A/DEFAULT(IBM),2,0,1,0,512
AllowDataCompression = 1
LibraryView = 0
AllowUnsupportedChar = 0
ForceTranslation = 0
Trace = 0
编辑/etc/odbcinst.ini文件以包含:
[iSeries Access ODBC Driver]
Description = iSeries Access for Linux ODBC Driver
Driver = /usr/lib/libcwbodbc.so
Setup = /usr/lib/libcwbodbcs.so
NOTE1 = If using unixODBC 2.2.11 or later and you want the 32 and 64-bit ODBC drivers to share DSN's,
NOTE2 = the following Driver64/Setup64 keywords will provide that support.
Driver64 = /usr/lib/lib64/libcwbodbc.so
Setup64 = /usr/lib/lib64/libcwbodbcs.so
Threading = 2
DontDLClose = 1
UsageCount = 1
然后创建与PDO的连接:
$pdo = new PDO("odbc:DRIVER={iSeries Access ODBC Driver};SYSTEM=$server;PROTOCOL=TCPIP", $username, $password);
答案 1 :(得分:1)
对于DB2 LUW,您至少需要安装适用于ODBC和CLI的{DB2}数据服务器驱动程序from here。它提供了PHP模块使用的必需库。
答案 2 :(得分:1)
您可以使用pecl ibm_db2扩展名。它使用DB2调用级接口(DB2 CLI),因此您必须在系统中安装IBM db2 CLI。
这是PHP DOC页面: