web-dev-qa-db-fra.com

Comment faire pour que l'extension SQLSRV fonctionne avec PHP, car MSSQL est obsolète?

J'ai mis à niveau vers PHP 5.3, et j'ai remarqué que php_mssql.dll est manquant. Après avoir googlé un peu, il semble que 5.3 ait abandonné la prise en charge de mssql. J'ai donc téléchargé les pilotes de Microsoft, mais je peux semble pas le faire fonctionner.

Je suis sur Windows. Que dois-je faire après avoir décompressé les fichiers dans le répertoire ext de mon PHP 5.3?

23
user187809

Citation http://php.net/manual/en/intro.mssql.php :

L'extension MSSQL n'est plus disponible sous Windows avec PHP 5.3 ou version ultérieure. SQLSRV, un pilote alternatif pour MS SQL est disponible auprès de Microsoft: " http://msdn.Microsoft.com/en-us/sqlserver/ff657782.aspx .

Une fois que vous l'avez téléchargé, suivez les instructions sur cette page:

En un mot:

Placez le fichier du pilote dans votre répertoire d'extension PHP.
Modifiez le fichier php.ini pour inclure le pilote. Par exemple:

extension=php_sqlsrv_53_nts_vc9.dll  

Redémarrez le serveur Web.

Voir aussi (copié à partir de cette page)

Le manuel PHP pour l'extension SQLSRV se trouve à http://php.net/manual/en/sqlsrv.installation.php et propose les éléments suivants pour l'installation:

L'extension SQLSRV est activée en ajoutant le fichier DLL approprié à votre répertoire d'extension PHP et l'entrée correspondante dans le fichier php.ini. Le téléchargement SQLSRV est fourni avec plusieurs fichiers de pilote. Le fichier de pilote que vous utiliserez dépendra de 3 facteurs: la version PHP que vous utilisez, que vous utilisiez PHP sans fil ou sans thread, et si votre installation PHP a été compilée avec le Compilateur VC6 ou VC9. Par exemple, si vous exécutez PHP 5.3, vous utilisez PHP non thread-safe et votre installation PHP a été compilée avec le compilateur VC9, vous devez utiliser le fichier php_sqlsrv_53_nts_vc9.dll. (Vous devez utiliser une version non thread-safe compilée avec le compilateur VC9 si vous utilisez IIS comme serveur Web). Si vous exécutez PHP 5.2, vous utilisez PHP thread-safe et votre installation PHP a été compilée avec le compilateur VC6, vous devez utiliser le fichier php_sqlsrv_52_ts_vc6.dll.

Les pilotes peuvent également être utilisés avec PDO .

37
Gordon

Télécharger Pilotes Microsoft pour PHP pour SQL Server . Extrayez les fichiers et utilisez l'un des éléments suivants:

File                             Thread Safe         VC Bulid
php_sqlsrv_53_nts_vc6.dll           No                  VC6
php_sqlsrv_53_nts_vc9.dll           No                  VC9
php_sqlsrv_53_ts_vc6.dll            Yes                 VC6
php_sqlsrv_53_ts_vc9.dll            Yes                 VC9

Vous pouvez voir l'état de la sécurité des threads dans phpinfo ().

Ajoutez le fichier correct à votre répertoire ext et la ligne suivante à votre php.ini:

extension=php_sqlsrv_53_*_vc*.dll

Utilisez le nom de fichier du fichier que vous avez utilisé.

Comme Gordon l'a déjà signalé, il s'agit de la nouvelle extension de Microsoft et utilise l'API sqlsrv_ * au lieu de mssql_ *

Mise à jour:
Sous Linux, vous n'avez pas les pilotes requis et ni l'extension SQLSERV.
Regardez Connectez-vous à MS SQL Server depuis PHP sous Linux? pour une discussion à ce sujet.

En bref, vous devez installer FreeTDS et OUI, vous devez utiliser les fonctions mssql_ * sous linux. voir la mise à jour 2

Pour simplifier les choses à long terme, je recommanderais de créer une classe wrapper avec les fonctions requises qui utilisent l'API appropriée (sqlsrv_ * ou mssql_ *) en fonction de l'extension qui est chargée.

Mise à jour 2: Vous n'avez pas besoin d'utiliser les fonctions mssql_ * sur linux. Vous pouvez vous connecter à un serveur ms sql en utilisant PDO + ODBC + FreeTDS. Sous Windows, la méthode la plus performante pour se connecter est via PDO + ODBC + SQL Native) Client depuis le pilote PDO + SQLSRV peut être incroyablement lent.

5
danishgoel