2016-11-16 31 views
1

我有下面的代碼在我的WordPress文件:「調用未定義功能sqlsrv_connect()」在WAMP,安裝的驅動程序

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

,我發現了以下錯誤:

Fatal error: Call to undefined function sqlsrv_connect()

我使用PHP 5.6.25運行Wamp,所以我安裝了5.6版本的SQL Server驅動程序。在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 

和他們展示活躍在WAMP的UI:

Screenshot showing the active extensions

那麼,爲什麼不工作?

編輯:他們沒有顯示在加載的擴展。

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

返回:

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

你可以從phpinfo添加你的擴展配置節(sqlsrv)嗎? –

+0

嗨@mim,我找不到phpinfo上的任何地方 - 它應該在哪裏? – BFWebAdmin

+0

@mim - 編輯的問題;他們似乎沒有被加載。我該如何解決這個問題? – BFWebAdmin

回答

0

的MSSQL擴展已不存在的Windows使用PHP 5.3或更高版本。 SQLSRV,對MS SQL的替代驅動程序可從微軟:»http://www.microsoft.com/en-us/download/details.aspx?id=20098

原來的答案:

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

+0

這些是我正在使用的那些。我的設置完全按照這個問題。 – BFWebAdmin

+0

用'php_info()'創建一個文件,你將得到擴展名列表。 –

+0

你的意思是'phpinfo();'?我已經有一個,看不到他們列出。 – BFWebAdmin

0

,你的GUI將其標記爲 「已安裝」,這意味着小。 GUI工具可能認爲它們已安裝,但它們不是。爲了使用擴展名,PHP需要在PHP.INI文件中指定,或者在由PHP.INI加載的文件中指定。另外,如果兩者都指定了它們,則只有一個實際可行。

使用phpinfo()可以檢索的php.ini的位置,你可以使用任何\兼容正文本編輯器打開(所以,寫字板,記事本不)來看看什麼是真正的

然後你需要檢查它是如何加載擴展。

例如的phpinfo可能會說:

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

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

這意味着你定義檢查的php.ini,再加上所有INI文件目錄modules。當然,你的路徑會有所不同。

無論是在php.ini或者,比如說,模塊/ SQLSERV.INI(名被忽略,但擴展名必須是的.ini),你需要有一些像

extension=php_sqlsrv_56_ts.dll 
extension=php_pdo_sqlsrv_56_ts.dll 

然後,這些DLL(您的DLL可能會不同,並且您將爲每個安裝的驅動程序安裝一個DLL)需要在那裏,並且是正確的版本。如果情況並非如此,您應該會收到一條消息,但消息可能會丟失在某處的某個日誌文件中。所以你需要檢查配置,看看是否顯示這樣的信息。

在一個捏,你可以嘗試和設置一個錯誤 DLL,看看是否引發一些可識別的錯誤行爲。如果確實如此,則可以確定該行被解析,因此具有該行爲的而不是意味着該行是可以的。

相關問題