Ich versuche den PHP-PDO-Treiber für den SQL-Server zu bekommen. Ich habe die Datei von Microsoft erhalten.
Ich benutze PHP 5.3. Ich habe php_pdo_sqlsrv_53_nts.dll
in mein PHP-Erweiterungsverzeichnis kopiert und PHP.INI
geändert. Das Fehlerprotokoll zeigt
[31-Mar-2012 20:11:38] PHP Warnung: PHP Start: Dynamische Bibliothek konnte nicht geladen werden 'c: \ php \ ext \ php_pdo_sqlsrv_53_nts.dll' - Das angegebene Modul konnte nicht gefunden werden.
in Unbekannt in Zeile 0
Die Datei existiert. Ich überprüfte es mit DEPENDS.EXE und fehlte MSVCR100.DLL
und MSVCP100.DLL
und ich lief alle VC ++ Laufzeitpakete und bekam die DLLs. DEPENDS meldet zwei fehlende Abhängigkeiten, LINKINFO.DLL
und IESHIMS.DLL
. Nicht sicher, was sie beide sind.
Ich habe kein PHP_PDO.DLL
; Von dem, was ich gelesen habe, wird angezeigt, dass PHP 5.3+ php_pdo.dll
in PHP erstellt. phpinfo
hat einen Abschnitt "PDO", der "PDO drivers" = "no value"
hat. Ich bin mir nicht sicher, ob dieser Wert so ist, wie er sein sollte.
Ich habe versucht, den Webserver neu zu starten (statt den Dienst nicht nur neu zu starten), wie es in einem anderen Post vorgeschlagen wurde, aber das hat es nicht behoben.
Wird unter Windows Server 2008 mit IIS und auf x64 ausgeführt.
Ich litt 2 Tage lang unter dem gleichen Problem und fand schließlich eine Lösung.
1. Installieren Sie PHP: 5.3 wird empfohlen. (Alle .dll-Dateien im Zusammenhang mit 5.4 funktionieren nicht!)
Ссылка
2.Download Microsoft Treiber: Verwenden Sie nicht 3.0, nur 2.0 DLL-Dateien werden funktionieren!
Ссылка
3. Kopiere Treiber in den Ordner "ext" (Standard in PHP 5.3, und kann in php.ini geändert werden)
4. Aktualisieren Sie php.ini (Verwenden Sie den Texteditor oder PHP Manager)
z.B. extension = php_pdo_sqlsrv_53_nts_vc9.dll (vc6 wird nicht funktionieren!)
5.Restart IIS
6. Überprüfen Sie die PDO-Unterstützung in phpinfo (): "sqlsrv" sollte in der Liste "enable" sein.
7. Verbindungszeichenfolge: sqlsrv: Server = 19x.1xx.1xx.1xx; Datenbank = lab
Hier ist meine Umgebung: Windows 7 + IIS 7 + SQL Server 2008 R2, PHP 5.3
Der Glaube an die neueste Version von MS ist meine Schuld.
Der Grund, warum es no value
für PDO Drivers
sagt, ist einfach, weil es keine Treiber geladen hat. Die php_PDO.dll
ist nur eine Bibliothek, die die zusätzliche PDO drivers
abläuft, es ist kein Treiber. Das Problem bleibt bei der php_pdo_sqlsrv_53_nts.dll
, die Sie versuchen zu laden.
Die phpinfo()
, die Sie angegeben haben, ist irrelevant, da wir wissen, dass die DLL nicht geladen wird. Wir müssen herausfinden, warum php_pdo_sqlsrv_53_nts.dll
nicht geladen wird.
Wenige grundlegende Schritte, bevor wir weiter gehen:
.dll
definitiv am richtigen Ort? thread-safe
oder non-thread-safe
version? Das ist sehr wichtig!
Wenn Sie eine bestehende SQL Server 2012-Installation mit Native Client 11 haben, können Sie Native Client 10 nicht installieren, was für den Offical PHP Driver erforderlich ist. Eine Lösung besteht darin, NC 11 und abhängige Komponenten zu entfernen und dann NC 10 und NC 11 in dieser Reihenfolge zu installieren, aber das ist keine Möglichkeit für aktiv genutzte Server.
Um dies zu umgehen, verwenden Sie eine inoffizielle Version, die für NC 11 erstellt wurde, zB: Ссылка
Tags und Links sql-server php pdo