Personal tools
You are here: Home Symfony Symfony, PHP 5.2.1 pour Windows / IIS et Microsoft SQL Server
Document Actions
  • Send this page to somebody
  • Print this page
  • Add Bookmarklet

Symfony, PHP 5.2.1 pour Windows / IIS et Microsoft SQL Server

by admin last modified 2008-04-14 06:56

Utiliser Symfony et Microsoft SQL Serveur sous Windows peut poser problème car un bug dans une dll livrée avec PHP 5.2.1 empêche la connexion à la base de donnée. Voici comment corriger ce problème.

Le problème viens de la DLL ntwdblib.dll présente dans le dossier d'installation de PHP. En premier lieu, ouvrer un "command prompt" ([Windows + R]   et tapez cmd).

Et passez dans votre dossier d'installation de PHP :

c:
cd c:\Program Files\PHP

Créez une sauvegarde de la DLL d'origine :

move ntwdblib.dll ntwdblib.dll.backup

Et récupérez la DLL présente dans le dossier System32 de Windows :

copy %windir%\system32\ntwdblib.dll

Votre installation de Symfony devrait maintenant être capable de se connecter à la base de données SQLServer.

Remarque : Si vous rencontrez des problèmes pour charger l'extension php_mssql.dll, vérifiez l'endroit le module ISAPI PHP de IIS va chercher le fichier php.ini. Il ce peut que ce ne soit pas le répertoire d'installation de PHP.

Utiliser la réécriture d'URL avec Symfony

La documentation de Symfony propose l'utilisation de Helicon Tech Isapi Rewrite pour assurer la mécanique de réécriture d'URL. J'ai cependant récemment découvert un logiciel Open Source et gratuit remplaçant avantageusement cet outil. Il s'agit de Ionics Isapi Rewrite Filter. L'installation est bien documentée, et je vous fait confiance pour y arriver par vous même :D. Une fois l'installation effectuée, voici une base de travail fonctionnelle pour créer une configuration complète pour votre site Symfony (à placer dans le fichier IsapiRewrite4.ini) :

# If the target "file" or "directory" does not exist, we redirect to the Symfony index.php (ie : if it is a 404 error, it is managed by index.php).
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php$1 [L]

Régler les problèmes de connection à la base de donnée en mode ligne de commande

Il est impossible de se connecter à une base de données MSSql en ligne de commande. Ceci est dû à un bogue de Creole. Pour corriger ce problème, il faut éditer le fichier:

C:\Program Files\PHP\PEAR\pear\symfony\vendor\creole\drivers\mssql

Et commenter les lignes suivantes:

/**
* Commented to correct a Creole bug.
 if(!empty($dsninfo['port'])) {
  $dbhost .= $portDelimiter.$dsninfo['port']; } else {
$dbhost .= $portDelimiter.'1433';
}
*/

Vous pourrez alors utiliser correctement la ligne de commande symfony.

ntwdblib.dll

Posted by patrick at 2010-06-15 11:25
le fichier ntwdblib.dll ne se trouve pas dans le dossier system32

Lone Wolf

Posted by Pierre-Yves Landuré at 2010-06-15 12:25
Il faut avoir installé le client Microsoft SQL Server pour qu'il soit disponible.


Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards:

Wikio