Natywny sterownik ODBC serwera MSSQL dla systemów Linux i PHP 5.4
Mam Apache 2.2.16 i PHP 5.4.3 na Linux Debian 6 x64.
Aby zainstalować natywny sterownik ODBC serwera MSSQL dla systemu Linux, korzystam z następujących instrukcji:http://www.codesynthesis.com/~boris/blog/2011/12/02/microsoft-sql-server-odbc-driver-linux/
Skonfigurowałem plik odbc.ini w ten sposób:
[mydsn]
Driver = SQL Server Native Client 11.0
Database = datbase
Server = xxx.xxx.xxx.xxx,port
i mój odbcinst.ini w ten sposób:
[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
Aby przetestować, uruchamiam następujące polecenie:
$ isql -v mydsn dbusername dbpassword
I odniosłem sukces:
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
Następnie użyj phpize, aby zainstalować unixODBC w PHP 5.4, używając tego: (Pierwsze polecenie, ln -s ..., jest używane, ponieważ ./configure nie może znaleźć nagłówków php w domyślnej lokalizacji)
$ sudo ln -s /usr/include/php5 /usr/include/php
$ phpize
$ ./configure --with-pdo-odbc=unixODBC && make && make test
$ sudo make install
Na moim phpinfo () otrzymuję:
PDO support - enabled
PDO drivers - odbc
PDO Driver for ODBC (unixODBC) - enabled
ODBC Connection Pooling - Enabled, strict matching
Teraz czas przetestować wszystko na skrypcie 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>";
}
?>
Ale to nie działa ... Dostałem ten komunikat o błędzie:
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
Więc moje pytanie brzmi: co się dzieje? Jakiej konfiguracji brakuje? Jak poprawnie skonfigurować macierzysty sterownik ODBC serwera MSSQL w systemach Linux i PHP 5.4?
Ps .: Kiedy próbuję użyć odbc_connect () PHP mówi, że funkcja nie istnieje.