PHP Keine Verbindung zum MS SQL Server: Unterschied zwischen den Versionen
Franky (Diskussion | Beiträge) K |
Franky (Diskussion | Beiträge) |
||
Zeile 25: | Zeile 25: | ||
=== Einbinden in die php.ini === | === Einbinden in die php.ini === | ||
− | Kopiere die passenden DLLs (je nach PHP Version und Thread Safety) in das ''ext'' Verzeichnis im PHP Ordner und füge Sie in der '''php.ini''' hinzu. Z.B.: | + | Kopiere die passenden DLLs (je nach PHP Version und Thread Safety) in das ''ext'' Verzeichnis im PHP Ordner und füge Sie in der '''php.ini''' hinzu. Z.B. für PHP 5.3: |
extension=php_pdo_sqlsrv_53_ts.dll | extension=php_pdo_sqlsrv_53_ts.dll | ||
Zeile 33: | Zeile 33: | ||
Ob ihr ts oder nts benötigt, könnt ihr über phpinfo() mit der Eigenschaft ''Thread Safety'' ermitteln (Enabled = ts). | Ob ihr ts oder nts benötigt, könnt ihr über phpinfo() mit der Eigenschaft ''Thread Safety'' ermitteln (Enabled = ts). | ||
+ | |||
+ | Die neuesten Versionen passend zur PHP Version erhaltet ihr hier: | ||
+ | * [https://www.microsoft.com/en-us/download/details.aspx?id=20098] | ||
+ | * [https://github.com/Microsoft/msphpsql/releases] | ||
=== SQL Server Feature Pack === | === SQL Server Feature Pack === |
Aktuelle Version vom 16. Oktober 2017, 15:33 Uhr
Inhaltsverzeichnis
Fehler[Bearbeiten]
Beim Verbinden mit PHP zum Microsoft SQL Server über die Erweiterung php_mssql.dll erscheint die Fehlermeldung:
Keine Verbindung zum MS SQL Server
ntwdblib.dll[Bearbeiten]
Bei der PHP Installation ist eine Version der Datei ntwdblib.dll enthalten, die nicht mit dem SQL Server 2003, SQL Server 2005 und SQL Server Express zusammen arbeitet. Die Version der ntwdblib.dll ist wahrscheinlich die 2000.2.8.0 und die Version die zum Kommunizieren mit dem SQL Server benötigt wird, ist die 2000.80.194.0. Diese Datei liegt entweder im %windows%\System32 Verzeichnis oder in einem anderen Verzeichnis, wie z.B. apache\bin.
Hier kann die aktuelle Version runter geladen werden: ntwdblib.dll
Falls die ntwdblib.dll ganz fehlt, erscheint eine ähnliche Meldung wie folgt in der error.log am Apache Server:
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\...\PHP\ext\php_mssql.dll' - The specified module could not be found.
Und auf der Website erscheint die Fehlermeldung, dass die jeweilige mssql-Funktion nicht existiert.
PHP Treiber ab 5.2.0[Bearbeiten]
Ab PHP 5.2.0 funktioniert der php_mssql.dll Treiber nicht mehr. Es muss ein anderer Treiber verwendet werden:
Einbinden in die php.ini[Bearbeiten]
Kopiere die passenden DLLs (je nach PHP Version und Thread Safety) in das ext Verzeichnis im PHP Ordner und füge Sie in der php.ini hinzu. Z.B. für PHP 5.3:
extension=php_pdo_sqlsrv_53_ts.dll extension=php_sqlsrv_53_ts.dll
ts=thread-safe, nts=non-thread-safe
Ob ihr ts oder nts benötigt, könnt ihr über phpinfo() mit der Eigenschaft Thread Safety ermitteln (Enabled = ts).
Die neuesten Versionen passend zur PHP Version erhaltet ihr hier:
SQL Server Feature Pack[Bearbeiten]
Falls die Verbindung trotz des SQL Server Driver for PHP nicht funktioniert. Kann es an dem fehlenden SQL Server Native Client liegen. Diesen erhälst Du hier:
SQLSRV20
- Microsoft SQL Server 2008 Service Pack 3 Feature Pack
- Microsoft SQL Server 2008 R2 Feature Pack
- Microsoft SQL Server 2008 R2 SP2 Feature Pack
SQLSRV30
Visual C++ 2010 SP1 Redistributable Package (x86)[Bearbeiten]
Neben dem Native Client muss noch das genannte Redistributable Package installiert werden: http://www.microsoft.com/de-de/download/details.aspx?id=8328
Andernfalls erscheint beim Apache Dienst-Start im error.log der Hinweis: php_sqlsrv_54_ts.dll: Das angegebene Modul wurde nicht gefunden
Verbindungstest[Bearbeiten]
Falls es dann immer noch zu keiner Verbindung kommt, kann eventuell der Fehler über dieses PHP Script ermittelt werden:
<?php
$connectionInfo = array("Database" => 'Datenbankname', "UID" => 'Benutzername', "PWD" => 'Passwort');
if (!sqlsrv_connect("Servername", $connectionInfo))
{
print_r( sqlsrv_errors());
}
else
{
echo("Verbindung erfolgreich.");
}
?>