我在 Windows 服务器上运行 MSSQL。我可以使用 ODBTP、ADODB 和 PHP 从其他 Windows 服务器连接到它。当我在 Linux 服务器上尝试相同的操作时,我收到响应错误:
[ODBTPERR][0]Invalid Response in /var/www/html/Database/adodb5/drivers/adodb-mssql.inc.php on line 726:[ODBTPERR][0]Invalid Response
ODBTP (v1.1.4) 作为 Linux 服务器上的扩展启用,如果我使用 odbtp.conf 文件设置,我会收到正确的连接错误,所以它正在正确地拾取东西。我可以从 Linux 服务器远程登录到端口 2799 上的数据库服务器并返回 OBDTP 提示。任何人都可以建议任何步骤吗?谢谢
2 回答
我有类似的问题:PHP 警告:第 16 行 /var/projects/myproject/tmptest.php 中的 [ODBTPERR][0]Invalid Response
我还通过重新编译odbtp解决了它。以下是 odbtp 源目录 (odbtp-1.1.4) 中的 README.64bitOS 文件的详细说明
在 64 位操作系统上构建 ODBTP 客户端库
在 64 位操作系统上,如 Tru64 UNIX,C 固有数据类型“long”是 64 位。但是,ODBTP 客户端库假定“long”数据类型是 32 位。如果客户端库是使用“开箱即用”配置在 64 位系统上构建的,则客户端应用程序运行时将出现“无效响应”错误。为防止发生这些错误,必须在编译库之前定义 _C_LONG_64_。这是通过简单地取消注释文件 odbtp.h 中定义此符号的行来完成的
指示:
在纯文本编辑器(例如 vi)中打开文件 odbtp.h。
找到包含已“注释掉”的 _C_LONG_64_ 定义的行。
/* #define _C_LONG_64_ 1 */
通过删除 /* 和 */ 取消注释该行。
#define _C_LONG_64_ 1
退出编辑器,然后根据安装说明构建客户端库。
我不确定这个解决方案是否适用于静态 ODBTP 扩展......我已经使用动态扩展(http://odbtp.sourceforge.net/install.html#phpshared)实现了它
该问题是由于尝试使用未针对 64 位机器编译的 odbtp 库和 php 扩展而引起的。这条线索来自 Robert Twitty 在论坛上的帖子(不确定在哪里)。我们重新编译了启用 64 位的 libodbtp.so 和 odbtp.so。Dave Keen (dev@ruffness.com) 找到了解决方案。