Obtenir Microsoft PHP PDO pour SQL Server de travail
Je suis en train d'essayer d'obtenir le PHP PDO pilote pour SQL server de travail. J'ai obtenu le fichier à partir de Microsoft.
Je suis à l'aide de PHP 5.3. J'ai copié php_pdo_sqlsrv_53_nts.dll
à mon dossier d'extension PHP et modifié PHP.INI
. Le journal des erreurs montre
[31-Mar-2012 20:11:38] PHP Warning: PHP Startup: Unable to load dynamic library 'c:\php\ext\php_pdo_sqlsrv_53_nts.dll' - Le module spécifié est introuvable.
in Unknown on line 0
Le fichier n'existe pas. Je l'ai vérifié avec DEPENDS.EXE et manquait MSVCR100.DLL
et MSVCP100.DLL
et j'ai couru tous les VC++ runtime packs et a obtenu la Dll. DÉPEND des rapports de deux dépendances manquantes, LINKINFO.DLL
et IESHIMS.DLL
. Pas sûr que ce soit.
Je n'ai pas de PHP_PDO.DLL
; à partir de ce que j'ai lu, il est indiqué que PHP 5.3+ s'appuie php_pdo.dll
en PHP.phpinfo
a une section "AOP", qui a "PDO drivers" = "no value"
. Je ne suis pas sûr si cette valeur est ce qu'il devrait être.
J'ai essayé de redémarrer le serveur web (par opposition à non seulement de redémarrer le service) comme suggéré dans un autre post, mais qui n'ont pas le fixer.
En cours d'exécution sur Windows Server 2008 avec IIS et sur x64.
Vous devez toujours redémarrer votre serveur lors de la prise de chnages pour le PHP.ini! Ce n'est pas un correctif, il est de pratique courante, et c'est absolument nécessaire! Il sonne comme il peut y avoir deux problèmes. 1) L' .fichier dll n'est pas à la bonne place, là c'est un peu une erreur de frappe. Êtes-vous certain que c'est correct? 2) Votre drivers PDO peuvent aussi ne pas être chargé. Vous êtes en droit de penser que la
php_pdo.dll
est chargé en PHP automatiquement à partir de PHP 5.3+. Vous êtes certainement à l'aide de la bonne version de PHP. Pourrions-nous voir un extrait de la phpinfo()
?mes excuses, il ressemble à une partie de mon message a été tronqué; il est de Windows Server 2008 en cours d'exécution sur x64 avec IIS.
Rédigé mal, j'ai essayé de redémarrer IIS, il y avait un autre post ici où la résolution est de redémarrer le serveur, plutôt que pour le service. J'ai donc essayé les deux..
mise à jour pour afficher les informations PHP pastebin.com/H6p9Ra3U
OriginalL'auteur Sam | 2012-03-31
Vous devez vous connecter pour publier un commentaire.
J'ai souffert du même problème depuis 2 jours et enfin trouver une solution.
1.Installer PHP: 5.3 est recommandé. (Toutes les .dll fichiers liés à 5,4 ne marchera pas!)
http://www.php.net/downloads.php
2.Téléchargement de Pilotes Microsoft: Ne pas utiliser 3.0, seulement 2,0 dll fichiers de travail!
http://www.microsoft.com/en-us/download/details.aspx?id=20098
3.Copier les pilotes sur "ext" dossier (par défaut dans php 5.3, et peut être modifié en php.ini)
4.Mise à jour de php.ini (Utilisation de l'éditeur de texte ou PHP Manager)
par exemple extension=php_pdo_sqlsrv_53_nts_vc9.dll (vc6 ne marchera pas!)
5.Redémarrez IIS
6.Vérifier AOP de soutien dans le phpinfo(): "sqlsrv" doit être à "activer" de la liste.
7.Chaîne de connexion: sqlsrv:Server=19x.1xx.1xx.1xx;Database=lab
Voici mon environnement: Windows 7 + IIS 7 + SQL Server 2008 R2, PHP 5.3
Croyant dans la dernière version de MS est de ma faute.
OriginalL'auteur Rex
La raison pour laquelle il est en train de dire
no value
pour laPDO Drivers
est tout simplement parce qu'il n'a pas chargé les pilotes. Lephp_PDO.dll
est juste une bibliothèque que les autresPDO drivers
de ruissellement, ce n'est pas un pilote. La question reste avec laphp_pdo_sqlsrv_53_nts.dll
que vous essayez de charger.La
phpinfo()
que vous avez fourni n'est pas pertinente car nous savons que la dll n'est pas chargé. Nous devons aller au fond de pourquoi lephp_pdo_sqlsrv_53_nts.dll
n'est pas chargé.Quelques étapes de base avant d'aller plus loin:
.dll
certainement au bon endroit?thread-safe
ounon-thread-safe
version? C'est très important!Le
phpinfo()
est de ne pas voir la.dll
alors, comment peut-il savoir si le fichier est thread-safe ou pas. Si vous utilisez IIS, votre installation de PHP sera non thread-safe, c'est ce que vous allez lire. Ce que vous devez faire est sûr, c'est que lephp_pdo_sqlsrv_53_nts.dll
bibliothèque est non thread-safe sorte qu'il peut fonctionner avec votre installation de PHP. Il semble que c'est à cause de la " nts " dans le nom. Pouvez-vous expliquer ce que vous entendez par "il est lié avec PHP5.DLL'?si c'était la version thread-safe, il serait lié, lors de la compilation avec PHP5TS.DLL de ce que j'ai lu. Le nom de fichier est php_pdo_sqlsrv53_nts.dll 100%, j'ai même copié le nom du fichier et le coller dans php.ini pour s'assurer que je n'étais pas larmoyants yeux et manque de quelque chose.
Il est certainement
non-thread safe
, afin que nous puissions la règle. Ce que j'ai besoin de savoir est ce que vous entendez par "lié avec PHP4.dll'? Cela devrait être négligeable! Tous vous avez besoin à faire est de rechercher le fichier dans le php.ini. Pourriez-vous copier et coller les extensions partie de la php.ini à votre question afin que je puisse le double de vérifier ça?merci pour votre aide. J'ai fini par le résoudre en utilisant l'ancienne version des pilotes. J'ai remarqué une note de fin dans MSFT documentation en disant que la librairie PDO v3 requis PHP >= 5.3.6. Je suis à la 5.3.1, et ne peuvent pas se déplacer en raison d'une incompatibilité avec un autre logiciel.
OriginalL'auteur Ben Carey
J'ai remarqué une note de bas de page dans la documentation de Microsoft en disant: PHP >= 5.3.6 a été nécessaire pour la Version 3 de la PDS pilotes. Comme je suis en cours d'exécution 5.3.1, et je ne peux pas passer d'elle, les plus âgés, beau travail, en dépit d'être obsolète.
OriginalL'auteur Sam
Un peu d'aide dans le sujet:
Si vous disposez déjà d'une installation de SQL Server 2012 Native client 11, vous ne pouvez pas installer le client Natif de 10 sur elle, ce qui est nécessaire pour Officiel PHP Pilote.
La seule solution est de supprimer NC 11 et composants dépendants, puis installer NC 10 NC 11, dans cet ordre, mais ce n'est pas une possibilité pour activement utilisé les serveurs.
Une solution pour cela est d'utiliser un non officiels de libération, fait pour NC 11 , par exemple: http://robsphp.blogspot.hu/2012/06/unofficial-microsoft-sql-server-driver.html
OriginalL'auteur Xmister
J'ai eu ce même problème. J'ai installé SQL Server 2012 logiciel client et qu'il est corrigé (je l'avais déjà installé SQL 2008 logiciel client). Je crois que c'installation de ODBC "Native Client 11" a été le correctif.
OriginalL'auteur JohnDavid