Voici un mix de plusieurs HOWTOs, car aucun ne fonctionnait pour moi jusqu'au bout
- Télécharger le SQL Server Native Client 11.0 on Linux ODBC Driver sur le site de Microsoft
- 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)
- Vérifier la configuration odbc, le fichier /etc/odbcinst.ini doit contenir
- 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)
[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
<?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 !)