Anwenden von Microsoft PHP PDO für SQL Server

8

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.

    
Sam 31.03.2012, 09:19
quelle

5 Antworten

2

Ich habe eine Fußnote in der Microsoft-Dokumentation bemerkt, dass PHP & gt; = 5.3.6 für Version 3 der PDS-Treiber benötigt wurde. Während ich 5.3.1 laufe, und ich kann mich nicht davon entfernen, funktionieren die älteren gut, obwohl sie veraltet sind.

    
Sam 03.04.2012, 06:21
quelle
4

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.

    
Rex 18.12.2013 16:21
quelle
3

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:

  1. Ist der Dateiname definitiv korrekt?
  2. Ist das .dll definitiv am richtigen Ort?
  3. Ist die Datei eine thread-safe oder non-thread-safe version? Das ist sehr wichtig!
  4. Wurde die Datei korrekt heruntergeladen? Es könnte beschädigt sein
Ben Carey 31.03.2012 10:32
quelle
1

Ein wenig Hilfe zum Thema:

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: Ссылка

    
Xmister 08.05.2013 15:09
quelle
0

Ich hatte das gleiche Problem. Ich habe SQL Server 2012-Client-Software installiert und es repariert (ich hatte bereits SQL 2008-Client-Software installiert). Ich glaube, es war die Installation des ODBC "Native Client 11".

    
JohnDavid 31.10.2014 15:30
quelle

Tags und Links