使用 ODBTP 从 Linux 客户端到 MSSQL - 响应错误

发布于 2024-07-13 14:23:36 字数 388 浏览 6 评论 0原文

我在 Windows 服务器上运行 MSSQL。 我可以使用 ODBTP、ADODB 和 PHP 从其他 Windows 服务器连接到它。 当我在 Linux 服务器上尝试相同的操作时,出现响应错误: [ODBTPERR][0]/var/www/html/Database/adodb5/drivers/adodb-mssql.inc.php 第 726 行中的无效响应:[ODBTPERR][0]无效响应
ODBTP (v1.1.4) 作为 Linux 服务器上的扩展启用,如果我使用 odbtp.conf 文件设置,我会收到正确的连接错误,因此它可以正确地获取内容。 我可以通过端口 2799 从 Linux 服务器 telnet 到数据库服务器并获得 OBDTP 提示符。 任何人都可以建议任何步骤吗? 谢谢

I have MSSQL running on a Windows server. I can connect to it using ODBTP, ADODB and PHP from other windows servers. When I try the same thing on a Linux server, I get a response error:
[ODBTPERR][0]Invalid Response in /var/www/html/Database/adodb5/drivers/adodb-mssql.inc.php on line 726:[ODBTPERR][0]Invalid Response
The ODBTP (v1.1.4) is enabled as an extension on the Linux server, and if I play with the odbtp.conf file settings I get proper connection errors, so it is picking things up correctly.
I can telnet from the Linux server to the database server on port 2799 and get back an OBDTP prompt.
Can anyone suggest any steps? Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

茶色山野 2024-07-20 14:23:36

我有类似的问题:
PHP警告:[ODBTPERR][0]第16行/var/projects/myproject/tmptest.php中的无效响应

我也通过重新编译odbtp解决了这个问题。
以下是 odbtp 源目录 (odbtp-1.1.4) 中的 README.64bitOS 文件的详细说明 在

64 位操作系统上构建 ODBTP 客户端库

在 64 位操作系统上,suzh 为 Tru64 UNIX,C 内部数据
“long”类型是 64 位。 但是,ODBTP 客户端库假设
“长”数据类型是 32 位。 如果客户端库建好了
在使用“开箱即用”配置的 64 位系统上,然后
客户端应用程序运行时将出现“无效响应”错误。
为了防止发生这些错误,必须定义_C_LONG_64_
在编译库之前。 这是通过简单地取消注释来完成的
文件 odbtp.h 中定义此符号的行

说明:

  1. 在纯文本编辑器中打开文件 odbtp.h,例如 vi。

  2. 查找包含 _C_LONG_64_ 定义的行
    已被“注释掉”。

    /* #define _C_LONG_64_ 1 */

  3. 通过删除 /* 和 */ 取消注释该行。

    #define _C_LONG_64_ 1

  4. 退出编辑器,然后根据需要构建客户端库
    安装说明


我不确定这个解决方案是否适用于静态 ODBTP 扩展...我已经使用动态扩展实现了它 (http://odbtp.sourceforge.net/install.html#phpshared)

I had similar problem:
PHP Warning: [ODBTPERR][0]Invalid Response in /var/projects/myproject/tmptest.php on line 16

And I also solved it by recompiling odbtp.
Here are detailed instructions from README.64bitOS file found in odbtp source directory (odbtp-1.1.4)

Building ODBTP client library on a 64-bit OS

On 64-bit operating systems, suzh as Tru64 UNIX, the C intrinsic data
type "long" is 64 bits. However, the ODBTP client library assumes
that the "long" data type is 32 bits. If the client library is built
on a 64-bit system using the "out of the box" configuration, then
"Invalid Response" errors will occur during client application runtime.
To prevent these errors from occuring, _C_LONG_64_ must be defined
prior to compiling the library. This is doen by simply uncommenting the
line in the file odbtp.h that defines this symbol

Instructions:

  1. Open the file odbtp.h in a plain text editor, such as vi.

  2. Find the line containing the _C_LONG_64_ definition that has
    been "commented out".

    /* #define _C_LONG_64_ 1 */

  3. Uncomment the line by removing the /* and */.

    #define _C_LONG_64_ 1

  4. Exit the editor, and then build the client library according
    to the installation instructions.


I am not sure if this solution would work with static ODBTP extension... I have implemented it using dynamic extension (http://odbtp.sourceforge.net/install.html#phpshared)

窝囊感情。 2024-07-20 14:23:36

该问题是由于尝试使用未针对 64 位计算机编译的 odbtp 库和 php 扩展引起的。 这条线索来自 Robert Twitty 在论坛上的帖子(不知道在哪里)。 我们重新编译了 libodbtp.so 和 odbtp.so,启用了 64 位。 Dave Keen ([电子邮件受保护]) 找到了该解决方案。

The problem was caused by trying to use odbtp libraries and php extension that were not compiled for a 64bit machine. This clue came from a Robert Twitty posting on a forum (not sure where). We recompiled the libodbtp.so and odbtp.so enabled for 64 bits. The solution was found by Dave Keen ([email protected]).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文