Bonjour à tous,
Je suis actuellement en stage et pour un projet j'ai besoin d'utiliser une base de données sous SQL Server et mon application tourne sous Symfony 2.8.
Je travail en local via xampp v3.2.2, php est en 5.6.19 et SQL Serveur c'est la version 2014
Coté PHP:
J'ai suivi la procédure que doctrine met sur son site pour utiliser SQL_Server, c'est à dire télécharger le .dll qui correspond à notre version de php sur le site de microsoft, le mettre dans le dossier ext/ et l'activer dans notre php.ini en faisant
1 2
| extension=php_sqlsrv_56_ts.dll
extension=php_pdo_sqlsrv_56_ts.dll |
Jusque là tout va bien, quand je fais
1 2 3
| <?php
print_r(PDO::getAvailableDrivers());
?> |
Il me retourne bien un tableau avec écrit
Array ( [0] => mysql [1] => pgsql [2] => sqlite [3] => sqlsrv )
Ce qui veut bien dire que l'extension est activée.
Coté SQL Server:
j'ai autorisé les connexions à distance et j'ai activé le mode d'authentification SQL Server et Windows.
J'ai créé une nouvelle connexion et une base de données.
Les protocoles clients TCP/IP sont activés et à l'écoute sur le port 1433.
Tentative de connexion:
J'ai voulu tester de me connecter directement à partir d'un fichier php avant d'utiliser Symfony pour voir si ça fonctionne.
Quand j'établi une connexion sqlsrv classique je n'ai pas de problème
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| $serverName = "PC-PRESTA-CRM\SQLEXPRESS";
$connectionInfo = array( "Database"=>'testSymfony',"UID"=>'UserTest',"PWD"=>'toto');
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if(!$conn) {die('Erreur de connexion à MSSQL');}
else{echo "Connexion OK";}
//RECUPERATION DATA
$sql = "SELECT * FROM test";
$stmt = sqlsrv_query( $conn, $sql);
if( $stmt === false ) {
die( print_r( sqlsrv_errors(), true));
}
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
echo $row['test']."<br />";
} |
J'arrive à me connecter et à récupérer le contenu de la table que j'ai créée. Le problème arrive quand je veux créer une connexion via pdo_sqlsrv.
Pour ça je fais:
$db = new PDO("sqlsrv:Server=127.0.0.1 (ou PC-PRESTA-CRM\SQLEXPRESS), 1433;Database=testSymfony", "UserTest", "toto");
En retour j'ai une erreur
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[08001]: [Microsoft][ODBC Driver 11 for SQL Server]Fournisseur TCP : Aucune connexion na pu être établie car lordinateur cible la expressément refusée. ' in C:\xampp\htdocs\test.php:50 Stack trace: #0 C:\xampp\htdocs\test.php(50): PDO->__construct('sqlsrv:Server=1...', 'UserTest', 'toto') #1 {main} thrown in C:\xampp\htdocs\test.php on line 50
J'ai du mal à comprendre pourquoi j'ai l'accès sans utiliser PDO, mais que je ne l'ai plus avec ? Il faut modifier quelque chose dans la configuration SQL Server ?
Si quelqu'un pouvait m'éclairer ça serait super.
J'imagine qu'une fois la connexion pdo établie, pour doctrine ça sera simple à mettre en oeuvre.
En tout cas merci de prendre le temps de me répondre.
Partager