Как подключиться к sybase с PHP в UNIX с помощью ODBC FreeTDS?

#php #linux #odbc #sybase #freetds

#php #linux #odbc #sybase #freetds

Вопрос:

Я попытался подключить sybase с терминала с помощью FreeTDS, и он работает нормально, но я не могу подключить базу данных с помощью PHP.

Я внес изменения в файлы ниже.

/etc/odbc.ini файл:

 Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
Server = 
Port = 
Database = 
Username = 
Password = 
  

freetds.conf файл

 [sybase]
    host=
    port=
    Tds version=5.0
  

Он отлично работает с помощью терминала

 tsql -S SYBASE -U username -P password
  

Но при подключении к PHP я получаю сообщение об ошибке:

[unixODBC] [Диспетчер драйверов] Имя источника данных не найдено, и драйвер по умолчанию не указан

Код файла PHP:

 $db = ADONewConnection('odbc');

$DSN ='UID=username;PWD=password;EngineName=dbServiceName;AutoStop=No;Integrated=No;Debug=No;DisableMultiRowFetch=No;CommLinks=SharedMemory,TCPIP{};Compress=No;Driver={FreeTDS}';

$db->Connect($DSN );
  

Ответ №1:

Я знаю, что в некоторых версиях вам нужно использовать IP-адрес сервера, а не имя, например, в freetds.conf :

 [myserver]
    host = 10.10.10.10
    port = 5000
    tds version = 5.0
  

Я также не знаю, чувствителен ли tds version регистр, но я всегда видел его в нижнем регистре. Вы уверены, что PHP читает из той же freetds.conf версии, что и версия командной строки?

Комментарии:

1. Большое спасибо. Это работает для меня. Я добавил IP-адрес и бесплатную версию tds в строку подключения.

2. Приятно слышать! Можете ли вы отметить правильный ответ? Приветствия.