Configurer PHP avec SQL Server

Lors d’un projet Symfony2 où j’avais dû utiliser un serveur IIS sur Windows (voir mon article Utiliser PHP sur IIS, j’avais déjà rencontrer des problèmes au point de proposer une solution pour aider toute personne qui serai susceptible de se retrouver dans une situation similaire.

Aujourd’hui je vous propose une solution concernant le deuxième problème que j’avais rencontré pour ce même projet. Comment utiliser PHP et SQL Server ensemble.

Configurer SQL Server

Commençons notre périple à travers les fichiers et les exécutables !

  • Dans un premier temps, vous devez télécharger MSSQL Server ainsi que SQL Server Management Studio. Pour MSSQL Server, dans mon cas, j’avais choisi la version Express mais en fonction de votre budget libre à vous d’en choisir une autre. De plus, j’ai installé la version 2008 mais je ne vois aucune contrindication à utiliser une version antérieur ou postérieur. Sur ce lien, vous pourrez choisir la version qui vous convient de SQL Server. Concernant SQL Server Management Studio, vous pouvez télécharger celui correspondant à la version que MSSQL que vous choisirez.
  • Une fois que vous aurez installé les deux exécutables (ce qui devrait vous prendre quelques minutes…), vous devrez configurer lors du premier lancement le mode de connexion pour les BDD gérées par votre serveur. Deux choix s’offrent à vous :

    1. Authentification Windows
    2. Authentification Windows + SQL
      C’est cette deuxième possibilité que vous devrez sélectionner. Cela vous permettra de vous connecter depuis l’extérieur sans forcément utiliser un Windows.
  • Ajouter ou restaurer une BDD.
  • Une fois que vous aurez fait cela, nous allons ajouter les droits pour un utilisateur.
    Dans le panel de gauche, vous déroulez l’arborescence du serveur (de base, il n’y a qu’un seul serveur et il porte le nom de votre ordinateur). Dans son dossier Sécurité, faites un clic-droit, et sélectionnez « Nouvelle connexion« . Là, vous devez créer un utilisateur. Donnez lui un nom, un mot de passe et choisissez « Authentification SQL Server« .CONSEILS :

    1. Je vous recommande de décocher « conserver la stratégie du mot de passe ».
    2. Je vous recommande de choisir une base de donnée par défaut, histoire de ne jamais se tromper.
  • Maintenant l’utilisateur est créé au niveau du serveur, nous allons pouvoir lui donner des droits sur la/les base(s) de données qui nous intéresse.
    Déroulez l’arboresence de la base de donnée qui nous intéresse, et dans son dossier « Sécurité/utilisateurs« , faites « Ajouter un utilisateur« .
    Là, vous n’allez pas re-créer de nouvel utilisateur, mais simplement choisir celui que nous venons d’ajouter juste avant.
    Vous devez également choisir les droits que vous allez lui attribuez sur cette base. Pour mon projet, j’avais besoin des droits en lecture/écriture, soit _dbdatareader et _dbdatawriter.

  • Il ne reste presque plus rien à faire du côté de SQL Server si ce n’est d’autoriser les IPs à se connecter. Et là, je m’excuse d’avance mais la logique de Microsoft entre en conflit avec mon propre système de raisonnement. Je vais donc essayer de vous guider de manière à ce que cette boite noir, se mette à fonctionner par magie… -_- »
    Lancer le programme SQL Server Configuration Manager. Trouvez où se trouve les protocoles de SQL Server. Allez dans « Activer TCP/IP et propriété« . Dans l’onglet « Adresses IP », trouvez la rubrique IPALL.À partir, de maintenant c’est du gâteau ! Pour le port TCP, saisissez 1433 et supprimer le contenu sur la ligne Port Dynamique.
  • Votre base de donnée est prête en elle-même mais reste un détail de poids, la possibilité d’accéder à votre SQL Server depuis l’extérieur, ce qui n’est pas possible de base.
    Nous allons donc simplement le port par défaut de SQL Server, soit le port 1433 pour qu’il soit accessible de l’extérieur et que le pare-feu ne filtre pas le contenu qui transite par ce port.
    Je ne vous détaillerai pas la procédure car elle est fabuleusement bien expliqué sur le serveur de ce si bon Microsoft, alors… pourquoi s’en priver ?
    Vous devrez donc ajouter une règle entrante qui autorise le port 1433 à communiquer. C’est aussi simple que ça !

Configurer SQL Server côté PHP

Nous allons maintenant nous atteler à configurer PHP pour qu’il puisse envoyer des requêtes à SQL Server.

  • Il est préferable d’installer Microsoft Redistribuable C++ 2010 et 2012 pour être sûr de ne pas rencontrer de soucis.
  • Téléchargez les pilotes SQL Server pour PHP. Choisissez la version 3 (SQLSRV30.EXE)
  • Une fois l’exécutable… exécuté, vous aurez une dossier décompressé à votre disposition. Dans tous ce mic-mac, vous allez devoir copier le fichier _php_pdo_sqlsrv_54_nts.dll _dans votre dossier d’extension PHP.Au jours d’aujourd’hui, et ce malgré la sortie de manière de PHP 5.5, aucun pilote Microsoft ne permet de fonctionner avec PHP 5.5. Le pilote portant le nom _php_pdo_sqlsrv_54_nts.dll correspond à la version 5.4 de PHP. Pour installer un nouveau PHP, rendez-vous sur mon tutoriel._
  • Maintenant que votre extension se trouve dans votre dossier à côté de toutes les autres extensions PHP, vous allez devoir éditer le fichier php.ini de manière à ajouter la ligne suivante :
    _extension=php_pdo_sqlsrv_54nts.dll
    Maintenant que la ligne a été ajouté, à chaque démarrage de votre serveur, PHP chargera cette extension.
  • Il ne vous reste plus qu’à redémarrer votre serveur PHP, à savoir Apache, IIS Server ou autre, et le tour est joué !

Conclusion

Ce tutoriel résume mes recherches lors de l’installation d’un projet PHP(Symfony2) avec IIS Server et une BDD SQL Server 2008 R2 Express. Pour toutes questions, n’hésitez, je serai ravie de pouvoir vous aider.