У меня есть Apache 2.2.16 и PHP 5.4.3 на Linux Debian 6 x64.
Чтобы установить собственный драйвер ODBC для MSSQL Server для Linux, я использую следующие инструкции: http://www.codegenesis.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:
prepare($query);
$stmt->execute();
while ($row = $stmt->fetch()) {
echo "";
print_r($row);
echo "
";
}
?>
Но это не работает... Я получил это сообщение об ошибке:
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 Server в Linux и PHP 5.4?
Ps.: Когда я пытаюсь использовать odbc_connect(), PHP говорит, что функция не существует.