Ошибка функции odbc_connect() php5 при подключении к таблице Visual FoxPro9

Я запускаю php5 на сервере Ubuntu10.10, где уже установлены пакеты unixODBC и php5-odbc. Я продолжаю получать сообщение об ошибке в процессе подключения - код:

$data_source = 'DRIVER={Microsoft dBASE Driver (*.dbf)};Data Source=//128.251.xxx.xxx/lv_apps/AppsLON/CData/dbf/cdma';"", "");
$conn = odbc_connect($data_source, "", "");
if (!$conn)
    exit("Connection Failed: " .$conn );

сообщение об ошибке:

1 Warning: odbc_connect(): SQL error: [unixODBC][Driver Manager]Data source name not found, and no default driver specified, SQL state IM002 in SQLConnect in /var/www/vfptest.php on line 6 

Я добавил extention=dbase.so и extention=odbc.so в оба файла: /etc/php5/apache2/php.ini и /etc/php5/cli/php.ini и перекомпилировал установку php с помощью:

sudo ./configure --prefix=/usr --enable-dbase=shared --with-unixODBC

Я также пошел в unixODBC и pecl, чтобы установить библиотеки unixODBC и dbase отдельно, но безуспешно.

Также я нашел эту ссылку: http://www.devlist.com/ConnectionStringsPage.aspx, где она указано, что для создания ODBC-соединения с базой данных foxpro я использую строку:

Driver={Microsoft Visual FoxPro Driver};SourceType=DBC;SourceDB=c:\demo.dbc;Exclusive=No;NULL=NO;Collate=Machine;BACKGROUNDFETCH=NO;DELETED=NO 

однако это все еще не сработало для меня; вероятно, потому что у меня не установлен драйвер visual foxpro или файл odbc.ini, указывающий на путь к драйверу... но я не знаю.


person sadmicrowave    schedule 04.04.2011    source источник
comment
также см. этот пост: stackoverflow.com/questions /5716492/   -  person sadmicrowave    schedule 19.04.2011


Ответы (3)


Короче говоря, odbc_connect() принимает; имя источника данных ODBC (DSN), имя пользователя и пароль в соответствии с --

http://php.net/manual/en/function.odbc-connect.php

Насколько мне известно, для Linux нет драйвера ODBC VFP, поэтому вам, скорее всего, потребуется использовать решение ODBC Bridge, например:

http://uda.openlinksw.com/odbc-odbc-mt/

Он имеет клиент-серверную архитектуру --

Linux-клиент -- php ODBC Application OpenLink Generic ODBC Driver (тонкий многоуровневый клиент ODBC)

Сервер Windows -- Брокер запросов OpenLink (многоуровневый сервер) Агент OpenLInk для ODBC (многоуровневый сервер) Fox Pro ODBC DSN (предварительно настроенный) Файлы Fox Pro...

Надеюсь, это поможет?

person Garry M. Biggs    schedule 05.04.2011
comment
Я считаю, что VFP поддерживается драйвером dBASE. В таком случае, какова моя синтаксическая структура, а также какие дополнительные файлы/dll или расширения php.ini мне нужны для работы функций dBASE? - person sadmicrowave; 05.04.2011
comment
@sadmicrowave, я не могу комментировать совместимость dBASE и VFP. - person Garry M. Biggs; 06.04.2011
comment
@sadmicrowave, достаточно сказать, что функция odbc_connect() в php принимает либо имя источника данных (DSN), либо строку подключения ODBC (в случае подключения без DSN, как опубликовано DRapp). Ваши основные проблемы двояки: 1) вы не предоставляете ни DSN, ни строку подключения. 2) У вас не установлен драйвер ODBC, обеспечивающий необходимое подключение. Это довольно большая тема — слишком много для 200-символьных ответов, поэтому, пожалуйста, не стесняйтесь писать мне по адресу gbiggs@‹nospam›openlinksw.com - person Garry M. Biggs; 06.04.2011

Ознакомьтесь с самой нижней частью этой темы на сеть MSDN

строка драйвера, которую вы опубликовали, - это «... строка подключения ODBC, которая не поддерживается для таблиц VFP, имеющих версию более позднюю, чем 6».

person Godzilla74    schedule 05.04.2011
comment
Хорошо, спасибо за это. Что, если я воспользуюсь другим методом, например dBASE? - person sadmicrowave; 06.04.2011
comment
Зависит от того, какую версию *nix вы используете. Ubuntu не поставляется с DBASE по умолчанию, поэтому вам нужно выполнить некоторые действия apt-get и настроить: [link]calipus.com/blogs/ - person Godzilla74; 06.04.2011

Несмотря на то, что Linux не знаком с подключением к VFP, соединения odbc для таких VFP подключаются к PATH, а не к конкретной таблице. Как только соединение с PATH установлено, ТОГДА вы можете запросить любую таблицу .DBF В этом месте.

Хотя я не могу ответить на вашу конкретную информацию о подключении, я нашел эту ссылку

http://www.phpfreaks.com/forums/index.php?topic=296832.0

это показывает подключение к источнику данных... обратите внимание, что он идентифицирует «DRIVER={Microsoft dBASE Driver (*.dbf)};datasource=/home/dir/file.dbf;» used... Вам, вероятно, придется использовать комбинацию этого драйвера и информации о пути (я бы все же сначала попробовал БЕЗ конкретного файла .dbf).

Надеюсь это поможет..

person DRapp    schedule 04.04.2011
comment
пожалуйста, смотрите мой ОП для обновления, соответствующего вашим предложениям - person sadmicrowave; 05.04.2011