2016-07-15 13 views
1

Ich versuche, mit PHP zu SQL Server zu verbinden. Ich habe den Microsoft ODBC-Treiber 13 für SQL Server installiert und habe ihn mit dem Befehl 'isql' getestet. Wenn ich jetzt versuche, eine Verbindung zum Server in PHP herzustellen, stürzt es immer ab und sagt "http-Fehler 500". Hier ist der Code:Aufruf zu undefinierter Funktion odbc_connect() in Ubuntu

<?php 
$server = merkur.edikt.local; 
$database = ITServiceE; 
$connection = odbc_connect("Driver={ODBC DRIVER 13 for SQL Server}; 
    Server=$server;Database=$database;", 
    'user', 
    'PW' 
); 
echo "connected"; 
?> 

Ich bin mit Ubuntu 16.04 Server und Apache2 und PHP 7. ich denke, es mit Berechtigungen für die Apache-Problem sein könnte (wenn der Apache die ODBC-Treiber zugreifen kann), aber ich bin nicht wirklich sicher wie das geht. EDIT: Hier ist das Protokoll von Apache Fehler:

PHP Notice: Use of undefined constant merkur - assumed 'merkur' in   /var/www/html/index.php on line 2 
PHP Notice: Use of undefined constant edikt - assumed 'edikt' in /var/www/html/index.php on line 2 
PHP Notice: Use of undefined constant local - assumed 'local' in /var/www/html/index.php on line 2 
PHP Notice: Use of undefined constant ITServiceE - assumed 'ITServiceE' in /var/www/html/index.php on line 3 
PHP Fatal error: Uncaught Error: Call to undefined function odbc_connect() in /var/www/html/index.php:4\nStack trace:\n#0 {main}\n thrown in /var/www/html/index.php on line 4 

und die Datei odbc.ini ist leer und odbcinst.ini sieht wie folgt aus:

[ODBC Driver 13 for SQL Server] 
Description=Microsoft ODBC Driver 13 for SQL Server 
Driver=/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0 
Threading=1 
UsageCount=2 
+0

Haben Sie sich die Apache Logs angeschaut? ('/ var/log/apache2/error.log' ist der Standard-Speicherort für Apache-Fehler, die unter Ubuntu 16.04 geloggt werden) Können Sie Ihre Frage bearbeiten und zeigen, was Sie in Ihrer'/etc/odbc.ini' und '/ etc/odbcinst.ini' Dateien? –

+0

danke für Hinweis, ich habe die Frage bearbeitet –

Antwort

1

Call to undefined function odbc_connect() Mittel dass dein PHP-System keine Funktion mit diesem Namen hat.

Da es keine Benutzerfunktion ist, die in reinem PHP geschrieben wurde, sondern eine Funktion von einer PHP-Erweiterung, bedeutet das, dass Sie such extension nicht installiert haben. Es ist erwähnenswert, dass die PHP-Erweiterungen nicht mit dem SQL Server-Treiber identisch sind (Sie benötigen beide).

Ihr Code enthält auch einige undefinierte Konstanten, die vermutlich Strings sind. Ich empfehle dringend, die vollständige Fehlerberichterstattung in Ihrer Entwicklungsumgebung zu aktivieren, damit Sie die Fehlerprotokolle nicht überprüfen müssen, um mehr über einfache Fehler zu erfahren.

+0

Vielen Dank für Ihren Rat, aber ich habe das Internet durchsucht und ich verstehe immer noch nicht, wie man die [Erweiterung] installieren (http://php.net/manual/en/odbc. installation.php). Könnten Sie mir bitte dabei helfen? –

+0

Egal, ich habe es endlich herausgefunden. Ich habe nur sudo apt-get install php7.0-odbc –