【问题标题】:IBM i DB2 access from Bitnami Wamp Stack从 Bitnami Wamp Stack 访问 IBM i DB2
【发布时间】:2017-01-18 21:56:59
【问题描述】:

编辑: 完全有可能免费这样做这仍然需要许可证,我不确定需要多少或确切的许可证,因为我的安装程序捆绑了我的许可证。

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

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

这是一个与here 几乎重复的问题,但也没有答案。 OP 最终放弃并使用“IBMDA400”连接到“IBM Client Access OLE DB”,但我也找不到它的下载。我什至不确定这种方法是否也能启用 db2_* 功能。

  • 我正在使用 Bitnami Wamp 堆栈 (https://bitnami.com/stack/wamp)
  • 我已经从 https://pecl.php.net/package/ibm_db2 并添加 extension=php_ibm_db2.dll 到我的 php.ini 文件中。
  • 我通过检查确认 php.ini 文件是正在使用的文件 echo phpinfo(); 的输出并成功修改。
  • 我还把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 Data Server Client”的下载。我想知道这是否是我需要安装的两个程序之一,只是名称不同。我知道名称一致性不是 IBM 的最佳属性...:D

【问题讨论】:

  • 像你这样的问题,询问外部资源的链接,很可能作为题外话被关闭,但考虑一下:www-03.ibm.com/systems/power/software/i/access/windows.html
  • 谢谢@mustaccio。我已经安装了 IBM i Access for Windows,但我认为这不是我需要的。我会进一步阅读以确认。也谢谢你的警告,我编辑了我的问题,所以它不再要求外部链接。

标签: php database dll db2 db2-400


【解决方案1】:

我有一些答案。

JDBC 和 ODBC 支持是免费的,通常随其他 IBM 软件一起提供。这对 PHP 中的 db2_* 函数没有帮助。 如果您的 DB2 数据库位于 IBM i 甚至 Z/OS 上,那么唯一的方法就是使用 DB2 Connect。有几个不同的版本,但对于工作站开发,您需要 DB2 Connect Enterprise Edition。缺点是他们目前提供的最少数量的套餐是 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

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

我个人认为,他们为使用 JDBC 或 ODBC 以外的方法远程连接到 IBM i 或 Z/OS 上的 DB2 数据库而收费但对 LUW 不收费是荒谬的。再加上最小的软件包可容纳 25 个用户,这让中小型企业(IBM i 的主要客户)更加沮丧。

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

是你编的。 是 FQDN 或 IP。 是您应该连接的 的端口。通常端口为 446。 是数据库名称。

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)

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

这是一个粗略的概述,我必须做些什么才能让它在我的特定情况下工作,而不是打算成为一个包罗万象的教程。如果您的环境不同,您可能需要进行调整。此外,我不确定 php_ibm_db2.dll 是否还有其他依赖项,而这些依赖项恰好已经满足了我。希望这至少可以节省一些时间和金钱。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-05
    • 1970-01-01
    • 2018-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多