MSSQL Server Pilote ODBC Natif pour Linux et PHP 5.4

J'ai Apache 2.2.16 et PHP 5.4.3 sur un Linux Debian 6 x64.

Pour installer le Serveur MSSQL du Pilote ODBC Natif pour Linux, j'utilise les instructions suivantes:
http://www.codesynthesis.com/~boris/blog/2011/12/02/microsoft-sql-server-pilote odbc-linux/

J'ai configuré mon odbc.le fichier ini de cette façon:

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

et mon odbcinst.ini de cette façon:

[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

Pour tester, je exécutez la commande suivante:

$ isql -v mydsn dbusername dbpassword

Et j'ai eu du succès:

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

Puis, utilisez la commande phpize pour installer unixODBC sur PHP 5.4, en utilisant ceci:
(La première commande ln -s ..., est utilisé parce que ./configurer ne pouvez pas trouver les en-têtes de php sur l'emplacement par défaut)

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

Sur mon phpinfo() j'obtiens:

PDO support - enabled
PDO drivers - odbc

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

Maintenant, il est temps de tout tester sur un script 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>";
    }
?>

Mais ça ne fonctionne pas... j'ai eu ce message d'erreur:

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

Donc ma question est: ce qui est arrivé? Quelle configuration je suis absent?
Comment configurer correctement le Serveur MSSQL du Pilote ODBC Natif sur Linux et PHP 5.4?

Ps.: Lorsque j'essaie d'utiliser le odbc_connect() de PHP indique que la fonction n'existe pas.

Remarque assurez-vous de hte problème - juste essayer de vous offrir des conseils jusqu'à ce que la personne ouvre la question. 1) Vérifiez les autorisations sur que "ne peut pas ouvrir" directory - assurez-vous que apache (www ou quoi que PHP est en cours d'exécution) peuvent lire/ouvrir le répertoire/fichier. 2) Avez-vous essayé le "générique" et non pas "unixODBC" pour PHP PDO?
désolé, qu'entendez-vous par "générique"? comment puis-je tester?
Lors de la compilation avec "--with-pdo-odbc=unixODBC", il y a aussi une "--with-pdo-odbc=générique,dir,libname,ldflags,cflags" version - aucune idée si ça va marcher car je ne l'ai jamais fait, mais juste jeter quelque chose à vous d'essayer si personne d'autre ne donne aucune pointeurs.
J'ai reçu récemment une version plus récente du pilote fonctionne bien sur Ubuntu 16.04 avec php7, voir ici: stackoverflow.com/a/37312824/55267

OriginalL'auteur vinigarcia87 | 2012-05-23