“在Wamp中调用未定义的函数sqlsrv_connect()”,安装了驱动程序

时间:2016-11-16 10:46:02

标签: php sql-server wordpress sql-server-2008 wamp

我的Wordpress文件中有以下代码:

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

我收到以下错误:

  

致命错误:调用未定义的函数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 )

2 个答案:

答案 0 :(得分:0)

您的GUI将其标记为“已安装”这一事实意味着很少。 GUI工具可能认为已安装,而它们不是。要使PHP使用扩展,需要在PHP.INI文件中或在PHP.INI加载的文件中指定它们。此外,如果两者中都指定了它们,则可能只有一个实际工作。

使用phpinfo(),您可以检索php.ini的位置,您可以使用任何\ n兼容的文本编辑器(因此,写字板,而不是记事本)打开,以查看真正的< / em>那里。

然后你需要检查它是如何加载扩展名的。

例如phpinfo可能会说:

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

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

这意味着您需要检查PHP.ini以及目录modules中的所有INI文件。当然,你的路径会有所不同。

无论是在PHP.INI中,还是在模块/ SQLSERV.INI中(名称被忽略,但扩展名必须是.ini),您需要具有类似

的内容
extension=php_sqlsrv_56_ts.dll
extension=php_pdo_sqlsrv_56_ts.dll

然后,这些DLL(你的DLL可能会有所不同,你安装的每个驱动程序都有一个)需要在那里,并且是正确的版本。如果不是这样,您应该收到一条消息,但某些日志文件中的消息可能会丢失。因此,您需要检查配置并查看是否显示此消息。

在紧要关头,您可以尝试设置错误的 DLL,以查看是否会引发一些可识别的错误行为。如果确实如此,您将确定该行已被解析,因此具有该行为意味着该行正常。

答案 1 :(得分:-1)

使用PHP 5.3或更高版本的Windows上不再提供MSSQL扩展。 SQLSRV是MS SQL的替代驱动程序,可从Microsoft获得:»http://www.microsoft.com/en-us/download/details.aspx?id=20098

原始答案:

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