2016-11-16 5 views
1

Ich habe den folgenden Code in meinem Wordpress-Datei bekommen:"Call to undefined function sqlsrv_connect()" in Wamp, Treiber installiert

$sql_server_2008 = sqlsrv_connect(
    '$ip', 
    array(
     'Database'=>'$database_name', 
     'UID'=>'$uid', 
     'PWD'=>'$password' 
    ) 
); 

und ich erhalte den folgenden Fehler:

Fatal error: Call to undefined function sqlsrv_connect()

Ich verwende Wamp mit PHP 5.6.25, also habe ich die 5.6 Versionen der SQL Server-Treiber installiert. Von PHP.ini:

extension=php_pdo_sqlsrv_56_nts.dll 
extension=php_pdo_sqlsrv_56_ts.dll 
extension=php_sqlsrv_56_nts.dll 
extension=php_sqlsrv_56_ts.dll 

und sie sind als aktiv in der Wamp UI zeigt:

Screenshot showing the active extensions

Also, warum es nicht funktioniert?

EDIT: Sie werden nicht in geladenen Erweiterungen angezeigt.

$extensions = get_loaded_extensions(); 
print_r($extensions); 

Returns:

Array ([0] => Core [1] => bcmath [2] => calendar [3] => ctype [4] => date [5] => ereg [6] => filter [7] => ftp [8] => hash [9] => iconv [10] => json [11] => mcrypt [12] => SPL [13] => odbc [14] => pcre [15] => Reflection [16] => session [17] => standard [18] => mysqlnd [19] => tokenizer [20] => zip [21] => zlib [22] => libxml [23] => dom [24] => PDO [25] => bz2 [26] => SimpleXML [27] => wddx [28] => xml [29] => xmlreader [30] => xmlwriter [31] => apache2handler [32] => Phar [33] => curl [34] => com_dotnet [35] => fileinfo [36] => gd [37] => gettext [38] => gmp [39] => intl [40] => imap [41] => ldap [42] => mbstring [43] => exif [44] => mysql [45] => mysqli [46] => pdo_mysql [47] => pdo_sqlite [48] => soap [49] => sockets [50] => sqlite3 [51] => xmlrpc [52] => xsl [53] => mhash [54] => Zend OPcache [55] => xdebug) 
+0

Können Sie Ihren Erweiterungskonfigurationsabschnitt (sqlsrv) von phpinfo hinzufügen? –

+0

Hallo @mim, ich kann das nirgendwo auf phpinfo finden - wo sollte es sein? – BFWebAdmin

+0

@mim - Frage bearbeitet; sie scheinen nicht geladen worden zu sein. Wie kann ich das beheben? – BFWebAdmin

Antwort

0

Die MSSQL-Erweiterung nicht mehr verfügbar unter Windows mit PHP 5.3 oder höher. SQLSRV, ein alternativer Treiber für MS SQL von Microsoft erhältlich: »http://www.microsoft.com/en-us/download/details.aspx?id=20098

Ursprüngliche Antwort:

Fatal error: Call to undefined function sqlsrv_connect() in C:\xampp\htdocs

+0

Das sind die, die ich benutze. Mein Setup entspricht genau dieser Frage. – BFWebAdmin

+0

Erstellen Sie eine Datei mit 'php_info()' Sie erhalten eine Erweiterungsliste. –

+0

Meinst du 'phpinfo();'? Ich habe bereits einen, kann sie nicht aufgelistet sehen. – BFWebAdmin

0

Die Tatsache, dass Ihr GUI markiert sie als "installiert" bedeutet wenig. Das GUI-Tool könnte denken sie sind installiert, während sie nicht sind. Damit PHP Erweiterungen verwenden kann, müssen sie entweder in der Datei PHP.INI oder in einer von PHP.INI geladenen Datei angegeben werden. Es ist auch möglich, dass, wenn sie in beiden angegeben sind, nur einer tatsächlich funktioniert.

phpinfo() Verwenden Sie den Speicherort php.ini abrufen können, mit dem Sie jede \ n-kompatiblen Texteditor öffnen können mit (so, Wordpad, nicht Notepad), um zu sehen, was wirklich ist da.

Dann müssen Sie überprüfen, wie es die Erweiterungen lädt.

Zum Beispiel phpinfo könnte sagen:

Loaded Configuration File => /etc/php5/apache2/php.ini 

Scan this dir for additional .ini files => /etc/php5/common/modules 

Hier bedeutet es, dass Sie, dass PHP.ini, sowie alle INI-Dateien im Verzeichnis modules überprüfen definiert. Deine Wege werden natürlich variieren.

Entweder in der php.ini oder in, sagen wir, modules/SQLSERV.INI (Name ignoriert wird, aber die Erweiterung muss ini sein), müssen Sie so etwas wie

extension=php_sqlsrv_56_ts.dll 
extension=php_pdo_sqlsrv_56_ts.dll 

Dann haben diese DLLs (Ihre DLLs können unterschiedlich sein, und Sie werden eine für jeden Treiber haben, die Sie installieren) müssen da sein und die richtige Version sein. Sie sollten eine Nachricht erhalten, wenn dies nicht so ist, aber die Nachricht könnte irgendwo in einer Logdatei verloren gehen. Sie müssen also die Konfiguration überprüfen und prüfen, ob eine solche Nachricht angezeigt wird.

Im Notfall können Sie versuchen, falsche DLL zu setzen, um zu sehen, ob dies ein erkennbares Fehlerverhalten hervorruft. Wenn dies der Fall ist, werden Sie sicher sein, dass die Zeile analysiert wird, und daher bedeutet nicht dieses Verhalten bedeutet, dass die Zeile in Ordnung ist.

Verwandte Themen