PHP 7.0 ODBC-Treiber für Windows
Aktualisiert ich meine PHP-5.6.30 (https://www.apachefriends.org/de/download.html) PHP-7.0 (https://bitnami.com/stack/wamp/installer)
Alles funktionierte gut so weit und es reduziert die Ladezeiten von meiner Seite aus 1,2 Sekunden auf ~300 ms, wenn ich eine MySQL-Datenbank. Aber jetzt versuche ich, eine Verbindung zu einer MSSQL-Datenbank mit dem folgenden einfachen script, das funktionierte mit meiner alten installation (PHP 5.6):
<?php
//Use the machine name and instance if multiple instances are used
$server = 'Server-Adress';
$user = '';
$pass = '';
//Define Port
$port='Port=1433';
$database = 'Databasename';
$connection_string = "DRIVER={SQL Server};SERVER=$server;$port;DATABASE=$database";
$conn = odbc_connect($connection_string,$user,$pass);
if ($conn) {
echo "Connection established.";
} else{
die("Connection could not be established.");
}
$sql = "SELECT * FROM st3_200 WHERE identifier = 1";
$result = odbc_exec($conn,$sql);
//Get Data From Result
while ($data[] = odbc_fetch_array($result));
//Free Result
odbc_free_result($result);
//Close Connection
odbc_close($conn);
//Show data
print_r($data);
?>
Aber jetzt habe ich einen Fehler in meinen logs, der sagt:
[Thu Dec 10 11:55:26.629956 2015] [:error] [pid 260:tid 968] [client
::1:63003] PHP Fatal error: Uncaught Error: Call to undefined
die Funktion odbc_connect() in
C:\Bitnami\wampstack-7.0.0-0\apache2\htdocs\test\query.php:11\nStack
trace:\n#0 {main}\n thrown in
C:\Bitnami\wampstack-7.0.0-0\apache2\htdocs\test\query.php auf
Zeile 11
Zuerst dachte ich, dass mein php.ini eine fehlende Erweiterung, so habe ich aktiviert "extension=php_pdo_odbc.dll"
den Unterschied von php.ini in der 5.6 version ist gibt es die Erweiterung:
"extension=php_mssql.dll" aktiviert. Aber ich kann Sie nicht finden in der neuen PHP-7.0.ini
Also meine intension ist, es gibt keine vorhandenen Treiber für odbc und PHP 7 noch?
Ich fand einige Treiber für Linux hier:
https://aur.archlinux.org/packages/php7-odbc/
Aber ich brauche etwas für meine Windows-Umgebung.
Wer hatte das gleiche Problem und hat es schon behoben?
Danke und Gruß
Domi
php_pdo_odbc.dll
ist nicht die odbc-Erweiterung, es ist der ODBC-Treiber für PDO. Sie möchten php_odbc.dll
InformationsquelleAutor user2077480 | 2015-12-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen Blick in deine php.ini, die Zeichenfolge
scheint zu fehlen in neue Anlagen, und zumindest ich musste es manuell hinzufügen in meine neue XAMPP-installation (7.0.1)
und versehentlich aktiviert das pdo_odbc.dll
InformationsquelleAutor fweber
PHP7 hat ein paar Module standardmäßig deaktiviert, die zuvor aktiviert in PHP5.
Es ist leicht zu beheben, aber da die Erweiterung soll bereits in der
\ext\
Ordner, kam mit PHP7. Sie brauchen nur zu ändern Sie Ihrephp.ini
- Datei, um die Zeile:Die Linie oben ist nicht bereits vorhanden und auskommentiert; Sie wirklich brauchen, um es hinzuzufügen!
PHP sieht für die
php.ini
Datei inC:\Windows\
aber es kann auch gefunden werden an anderer Stelle auf Ihrem Computer. So überprüfen Sie, ob beideC:\Windows\
undC:\php\
oder wo immer Sie sonst noch habe PHP installiert.Nach der änderung können Sie die Resultate überprüfen, die von der Befehlszeile wie diese:
oder (nach dem Neustart des Apache-web-server /Rechner) aus einem
.phtml
- Datei wie folgt:Die ausgegeben wird eine Liste aktivierter Module, die sollte nun odbc; wenn nicht, dann haben Sie möglicherweise modifiziert die falsche
php.ini
- Datei (suchen) haben oder vergessen haben, starten Sie den web-server /Rechner.Tipps:
Wenn Sie eine nicht-standard-installation verwenden, können Sie einen absoluten Pfad wie diesem:
InformationsquelleAutor Tim Penner
extension=php_mssql.dll (oder extension=php_sqlsrv_56_nts.dll wenn man es von den Microsoft-Treiber für PHP), ist Ihr problem: der Microsoft-SQL-Treiber für PHP 7 ist noch nicht bereit, die neueste ETA ist Ende Januar für die beta.
Wie es aussieht ist die Ursache für die Verzögerung ist die Absicht, die Einbeziehung von SQL-2016 in diesem Treiber so migrieren Sie einfacher in der Zukunft.
UPDATE (2016/02/12):
Wie gesagt hier (treffen-bhagdev Antwort), es ist eine "frühe technische Vorschau" von der PHP sqlsrv-Treiber für Windows zur Verfügung, die auf github.
InformationsquelleAutor Adrian B
Öffnen Sie Ihre php.ini-Datei und entfernen Sie die Kommentarzeichen oder fügen Sie die folgenden Zeilen:
Reset Internet Information Services:
Auf Eingabeaufforderung mit admin-Rechte geben:
Diese behoben das problem für mich.
InformationsquelleAutor Jhollman Cutcsa
Als Zusatz zu Adrian B ' s die Rede, die offiziellen Treiber, Sie können auch überprüfen, https://github.com/thomsonreuters/msphpsql
Dies ist ein Inoffizieller port. Jedoch gibt es Grenzen für die Zeit.
InformationsquelleAutor Akin Ocal
Ich denke, Sie hatte Recht, Sie müssen laden Sie den SQL Server-ODBC-Treiber für Ihre PHP-client-Plattform und OS.
Hier ist der link zum ähnlichen Problem: Call to undefined Funktion odbc_connect()
Sie können auch versuchen, diese zu installieren, connector für MySQL (wenn Sie MySQL verwenden): Connector/ODBC
benutzen oder wenn Sie MSSQL: ODBC-Treiber 11 für SQL Server
InformationsquelleAutor Nikolay Yenbakhtov
Müssen wir die x86-Treiber von Microsoft.
http://www.microsoft.com/ja-jp/download/details.aspx?id=13255
*Sorry, ja-jp' ist von mir. Bitte wählen Sie Ihr Land. Es gibt 2 Treiber, einer ist 32bit, aber wir brauchen 64bit(x86) version.
Dann könnten wir uns einstellen "ODBC-Datenquellen (64-bit)". Es erscheint auf dem Fenster.
Letzten, überprüfen Sie Ihre web. Vielleicht klappt es.
Mar. 29. 2016 Najo
InformationsquelleAutor Naio