PHP Keine Verbindung zum MS SQL Server: Unterschied zwischen den Versionen

Aus ITwiki
Wechseln zu: Navigation, Suche
K
 
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, 16:33 Uhr

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:

SQL Server Driver for PHP

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

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.");
}
?>

Nützliche Links[Bearbeiten]