我在Windows服务器上运行MSSQL。我可以使用来自其他Windows服务器的ODBTP,ADODB和PHP连接到它。当我在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服务器telnet到端口2799上的数据库服务器并返回OBDTP提示符。
有谁能建议任何步骤?感谢
答案 0 :(得分:1)
我有类似的问题: PHP警告:[ODBTPERR] [0]第16行/var/projects/myproject/tmptest.php中的响应无效
我也通过重新编译odbtp解决了这个问题。 以下是odbtp源目录(odbtp-1.1.4)中的README.64bitOS文件的详细说明
在64位操作系统上,suzh作为Tru64 UNIX,C内在数据 类型“long”是64位。但是,ODBTP客户端库假定 “long”数据类型是32位。如果构建了客户端库 在64位系统上使用“开箱即用”配置,然后 客户端应用程序运行时期间将出现“无效响应”错误。 为防止发生这些错误,必须定义_C_LONG_64_ 在编译库之前。这是通过简单地取消注释来实现的 odbtp.h文件中定义此符号的行
说明:
在纯文本编辑器中打开文件odbtp.h,例如vi。
查找包含_C_LONG_64_定义的行 被“评论出来”。
/ * #define _C_LONG_64_ 1 * /
删除/ *和* /。
取消注释该行#define _C_LONG_64_ 1
退出编辑器,然后根据构建客户端库 到安装说明。
我不确定此解决方案是否适用于静态ODBTP扩展...我已使用动态扩展(http://odbtp.sourceforge.net/install.html#phpshared)实现了它
答案 1 :(得分:0)
问题是由于尝试使用未编译为64位计算机的odbtp库和php扩展而引起的。这条线索来自Robert Twitty在论坛上的帖子(不确定在哪里)。我们重新编译了libodbtp.so和odbtp.so,启用了64位。解决方案由Dave Keen(dev@ruffness.com)发现。