2017-01-18 54 views
0

编辑: 这是完全有可能做到这一点免费这仍然需要许可证,我不知道有多少或到底哪个许可证需要作为矿用捆绑我的安装程序。IBM DB2我从Bitnami WAMP栈接入

我试图从本地PC连接到IBM i DB2服务器,作为PHP应用程序的一部分。我正在努力为本地发展而努力。

我找不到下面提到的“IBM DB2通用数据库客户端”和/或“IBM DB2 Connect”的下载。有没有人做过这件事,并可以借鉴一些见解?只要db2_ *函数可用,我就开放给备用解决方案。我正在使用现有的代码,没有简单/快捷的方式在开发和生产之间切换连接类型。

这是一个近乎重复的问题,如here但这也没有答案。 OP最终放弃并使用“IBMDA400”与“IBM客户端访问OLE DB”连接,但我也无法找到它的下载。我甚至不确定这种方法是否也会启用db2_ *函数。

  • 我使用
  • 我从 https://pecl.php.net/package/ibm_db2下载php_ibm_db2.dll并添加 extension=php_ibm_db2.dll到我的php.ini文件Bitnami WAMP栈(https://bitnami.com/stack/wamp)。
  • 我已经通过检查 输出echo phpinfo();并成功修改它来确认php.ini文件是正在使用的文件。
  • 我还将php_ibm_db2.dll放置在 extension_dir指令指定的位置。 extension_dir = "C:\Bitnami\wampstack-5.6.29-1\php\ext"

我看到的唯一PHP错误记录是当我启动服务器(它仍然成功 - 虽然没有db2_ *函数)。

[18-Jan-2017 21:08:18 UTC] PHP Warning: PHP Startup: Unable to load dynamic library 'C:\Bitnami\wampstack-5.6.29-1\php\ext\php_ibm_db2.dll' - The specified module could not be found. 

in Unknown on line 0 

[18-Jan-2017 21:08:19 UTC] PHP Warning: PHP Startup: Unable to load dynamic library 'C:\Bitnami\wampstack-5.6.29-1\php\ext\php_ibm_db2.dll' - The specified module could not be found. 

in Unknown on line 0 

但文件C:\Bitnami\wampstack-5.6.29-1\php\ext\php_ibm_db2.dll确实存在,并且具有完全相同的权限为目录中的所有其他* .dll文件(它没有被修改,因为在安装WAMP栈)。

我读过“IBM DB2通用数据库客户端”和“IBM DB2 Connect”必须安装在运行PHP here的同一台计算机上,但是无法找到下载。我可以找到关于如何安装每个的说明,但没有下载链接。

我找到了一个下载“IBM数据服务器客户”,这是在IBM的网站日志后面。我想知道这是否是我需要以不同名称安装的两个程序之一。我知道名称一致性不是IBM的最佳属性...:D

+0

问题像你这样的,问链接到外部资源,很可能会被关闭作为题外话,但考虑:http://www-03.ibm.com/systems/power/software /i/access/windows.html – mustaccio

+0

谢谢@mustaccio。我已经安装了IBM i Access for Windows,但我不认为这是我所需要的。但我会更多地阅读它以确认。也感谢你的警告,我编辑了我的问题,所以它不再要求外部链接。 –

回答

1

我有一些答案。

JDBC和ODBC支持是免费的,它通常与其他IBM软件一起提供。这对PHP中的db2_ *函数没有帮助。 如果您的DB2数据库位于IBM i甚至Z/OS上,那么唯一的方法就是使用DB2 Connect。有几个不同的版本,但对于工作站开发,您需要DB2 Connect企业版。缺点是他们目前提供的最小数量的套餐是25个用户,价格约为3,800美元。这个价格大约为152美元/用户,但对于只有2或3个开发商的小商店来说,这是不幸的。他们确实提供了5个许可证包,但截至目前他们不再提供。希望他们会在未来。

如果DB2数据库在LUW那么所有你需要的是一个可以从这里免费下载IBM数据服务器客户机(需要IBM帐户虽然): https://www-01.ibm.com/marketing/iwm/iwm/web/reg/pick.do?source=swg-idsc97&lang=en_US

一个潜在的替代方法是从服务的API IBM i在开发除API以外的应用程序期间由本地工作站使用。然而,API本身的开发仍然只能在系统AFAIK上完成。您也可以设置本地DB2数据库,并复制任何文件。生产和发展之间会有进一步的差异,但可以节省一些资金。

就我个人而言,我认为他们使用JDBC或ODBC以外的方法远程连接到IBM i或Z/OS上的DB2数据库,但对LUW收取任何费用是非常荒谬的。再加上25个用户的最小组件对于中小型企业(IBM i的主要客户)而言更令人沮丧。

我只是用“IBM Data Server Client”工作。首先,我从Bitnami,PHP 5.6.30 32bit安装了一个Wamp堆栈。然后我从passport advantage区域下载了IBM Data Server Client。在尝试使用here之后,我还没有试过这个版本,所以也可以使用它。这些步骤基于我从护照优势中获得的版本。它有一个安装向导,因此您可以按照步骤操作,但here是关于该过程的IBM文章。该文章除了包含IBM数据服务器客户端之外,还包括其他软件的安装指导,因此只需注意适用的其他软件。安装后,您必须从窗口的命令提示符配置客户端。为此我跟着this文章。总而言之,您必须对节点(服务器)进行编目,然后对数据库进行编目。然后重新启动会话并通过连接进行测试。语法如下:

< + NODENAME +>由您组成。 < + REMOTE +>是FQDN或IP。 < + PORT +>是你应该连接的端口< + REMOTE +>。通常该端口将是446. < + database_name +>是数据库名称。

db2 catalog tcpip node <NODENAME> remote <REMOTE> server <PORT> 

db2 catalog database <database_name> at node <NODENAME> 

Db2 terminate 

db2 connect to <database_name> user <user_name> (you will then be prompted for a password) 

一旦完成,你必须获得Windows PHP DDL从here的IBM_DB2驱动程序。我使用了1.9.9版本。然后将php_ibm_db2.dll文件移动到您的php.ini中extension_dir指令中指定的PHP扩展目录。然后将此行添加到您的php.ini extension=php_ibm_db2.dll。然后重新启动Apache,你应该能够连接。在成功连接到数据库的同时,我仍然在使用不合格的表格时遇到问题。尽管库列表设置正确,它似乎使用用户名而不是提供的库列表。我会在更新这部分时更新。

这是我必须做的一个粗略的概述,以让它在我的特定情况下工作,而不是打算成为一个包罗万象的教程。如果你的环境不同,你可能需要调整。此外,我不确定是否有任何其他的php_ibm_db2.dll依赖关系发生在我身上。希望这至少能为别人节省一些时间和金钱。

我解决了库列表中的问题;看到这个答案:https://stackoverflow.com/a/43193058/967617