Использование ODBTP от клиента Linux к MSSQL - ошибка ответа - PullRequest
1 голос
/ 17 февраля 2009

У меня работает MSSQL на сервере Windows. Я могу подключиться к нему, используя 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, я получаю правильные ошибки подключения, поэтому он правильно подбирает вещи. Я могу telnet с сервера Linux на сервер базы данных на порту 2799 и получить приглашение OBDTP. Кто-нибудь может предложить какие-либо шаги? Спасибо

Ответы [ 2 ]

1 голос
/ 01 июня 2010

У меня была похожая проблема: Предупреждение PHP: [ODBTPERR] [0] Неверный ответ в /var/projects/myproject/tmptest.php в строке 16

И я также решил это, перекомпилировав odbtp. Вот подробные инструкции из файла README.64bitOS, находящегося в исходном каталоге odbtp (odbtp-1.1.4)

Сборка клиентской библиотеки ODBTP в 64-битной ОС

В 64-битных операционных системах, suzh as 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. Раскомментируйте строку, удалив / * и * /.

    # определить _C_LONG_64_ 1

  4. Выйдите из редактора, а затем соберите клиентскую библиотеку согласно к инструкции по установке.


Я не уверен, что это решение будет работать со статическим расширением ODBTP ... Я реализовал его с помощью динамического расширения (http://odbtp.sourceforge.net/install.html#phpshared)

0 голосов
/ 17 февраля 2009

Проблема была вызвана попыткой использовать библиотеки odbtp и расширение php, которые не были скомпилированы для 64-битной машины. Эта подсказка пришла от публикации Роберта Твитти на форуме (не уверен, где). Мы перекомпилировали libodbtp.so и odbtp.so для 64 бит. Решение было найдено Дейвом Кином (dev@ruffness.com).

...