lundi 9 septembre 2013

Php, ODBC et MSSQLSERVER

Grosse galère pour faire fonctionner le tout ensemble !

Voici un mix de plusieurs HOWTOs, car aucun ne fonctionnait pour moi jusqu'au bout
  1. Télécharger le SQL Server Native Client 11.0 on Linux ODBC Driver sur le site de Microsoft
  2. Suivre exactement la procédure décrite dans install instructions (attention nécessite impérativement unixODBC-2.3.0, il faudra peut être le downgrader)
  3. Vérifier la configuration odbc, le fichier /etc/odbcinst.ini doit contenir
  4. [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
  5. Tester !
    En shell (php nom_du_fichier.php) dans un premier temps pour valider que la conf de base fonctionne et que les accès sont ok.

    fichier test_odbc.php (si extention odbc)
  6. <?php
      $conn=odbc_connect("DRIVER={SQL Server Native Client 11.0};Server=IPADDRESS;Database=DATABASE","USERNAME","PASSWORD");
      $sql="SELECT 'OK' as test";
      $rs=odbc_exec($conn,$sql);
      odbc_fetch_row($rs);
      echo odbc_result($rs,"test");
    ?>
    
    fichier test_odbc_pdo.php  (si extention pdo_odbc)
    <?php
      $dbh= new PDO('odbc:DRIVER={SQL Server Native Client 11.0};Server=IPADDRESS;Database=DATABASE', 'username', 'password');
      $query = "SELECT 'OK' as test";
      $stmt = $dbh->prepare("$query");
      $stmt->execute();
      while ($row = $stmt->fetch()) {
          print_r($row["test"]);
      }
      unset($dbh); unset($stmt);
    ?>
    Les scripts PHP ci dessus doivent renvoyer "OK" Si tout fonctionne sinon... tout un tas d'erreurs ! Les problèmes les plus courants sont liés à l'authentification, vérifier la connexion dans SQL Server et qu'elle a des droits suffisants sur la base, (par défaut public n'est pas suffisant !)

dimanche 1 septembre 2013

Configurer Virtualbox pour être sur le même LAN que l'hôte

Par défaut Virtualbox est configuré en Mode NAT (translation d'adresse), ce qui  rend toutes les VM "étanches", car elles ne seront vues que par l'hôte.

Pour que les VM puissent être vues sur le LAN au même titre que l'hôte, il faut le configurer en mode BRIDGE. (cela installe une nouvelle carte réseau)