Вопрос по sql-server, php, linux – Собственный драйвер ODBC для сервера MSSQL для Linux и PHP 5.4

15

У меня есть Apache 2.2.16 и PHP 5.4.3 на Linux Debian 6 x64.

Чтобы установить собственный драйвер ODBC для MSSQL-сервера для Linux, я использую следующие инструкции: http://www.codesynthesis.com/~boris/blog/2011/12/02/microsoft-sql-server-odbc-driver-linux/

Я настроил свой файл odbc.ini следующим образом:

[mydsn]
Driver      = SQL Server Native Client 11.0
Database    = datbase
Server      = xxx.xxx.xxx.xxx,port

и мой odbcinst.ini так:

[SQL Server Native Client 11.0]
Description=Microsoft SQL Server ODBC Driver V1.0 for Linux
Driver=/opt/microsoft/sqlncli/lib64/libsqlncli-11.0.so.1790.0
Threading=1
UsageCount=1

Чтобы проверить, я запускаю следующую команду:

$ isql -v mydsn dbusername dbpassword

И я получил успех:

+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>

Затем используйте phpize для установки unixODBC на PHP 5.4, используя это: (Первая команда, ln -s ..., используется, потому что ./configure не может найти заголовки php в расположении по умолчанию)

$ sudo ln -s /usr/include/php5 /usr/include/php
$ phpize
$ ./configure --with-pdo-odbc=unixODBC && make && make test
$ sudo make install

На моем phpinfo () я получаю:

PDO support - enabled
PDO drivers - odbc

PDO Driver for ODBC (unixODBC) - enabled
ODBC Connection Pooling        - Enabled, strict matching

Теперь пришло время проверить все на скрипте PHP 5.4:

<?php
    ini_set('display_errors', 1);
    error_reporting(E_ALL);

    $conn = new PDO('odbc:DSN=mydsn;UID='.$usr.';PWD='.$psw);

    $query = 'select * from my_table'; 
    $stmt = $conn->prepare($query);
    $stmt->execute();
    while ($row = $stmt->fetch()) {
        echo "<pre>";
        print_r($row);
        echo "</pre>";
    }
?>

Но это не работает ... Я получил это сообщение об ошибке:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[01000] SQLDriverConnect: 0 
[unixODBC][Driver Manager]Can't open lib '/opt/microsoft/sqlncli/lib64/libsqlncli-11.0.so.1790.0' : file not found' 
in /var/www/testemssql.php:17 
Stack trace: 
#0 /var/www/testemssql.php(17): PDO->__construct('odbc:DSN=mydsn...') 
#1 {main} thrown in /var/www/testemssql.php on line 17

Итак, мой вопрос: что происходит? Какую конфигурацию мне не хватает? Как правильно настроить собственный драйвер ODBC сервера MSSQL для Linux и PHP 5.4?

Ps .: Когда я пытаюсь использовать odbc_connect (), PHP говорит, что функция не существует.

Error: User Rate Limit Exceededstackoverflow.com/a/37312824/55267 Tarnay Kálmán
Error: User Rate Limit Exceeded Robbie
Error: User Rate Limit Exceeded Robbie
Error: User Rate Limit Exceeded vinigarcia87

Ваш Ответ

5   ответов
2

Error: User Rate Limit ExceededError: User Rate Limit ExceededError: User Rate Limit Exceeded

Error: User Rate Limit ExceededError: User Rate Limit Exceeded

1

Error: User Rate Limit ExceededError: User Rate Limit ExceededError: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

0

Error: User Rate Limit Exceeded

1

Error: User Rate Limit Exceeded

[SQL Server Native Client 11.0]
Description=Microsoft SQL Server ODBC Driver V1.0 for Linux
Driver=/opt/microsoft/sqlncli/lib64/libsqlncli-11.0.so.1790.0
UsageCount=1

Error: User Rate Limit Exceeded

Threading=1

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

5

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Похожие вопросы