Php &引用;调用未定义的函数sqlsrv_connect();在Wamp中,安装了驱动程序

Php &引用;调用未定义的函数sqlsrv_connect();在Wamp中,安装了驱动程序,php,sql-server,wordpress,sql-server-2008,wamp,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() 我使用PHP5.6.25运行Wamp,因此我安装了

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

$sql_server_2008 = sqlsrv_connect(
    '$ip',
    array(
        'Database'=>'$database_name',
        'UID'=>'$uid',
        'PWD'=>'$password'
    )
);
我得到了以下错误:

致命错误:调用未定义的函数sqlsrv_connect()

我使用PHP5.6.25运行Wamp,因此我安装了SQL Server驱动程序的5.6版本。从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中显示为活动状态:

那它为什么不起作用呢

编辑:它们没有显示在加载的扩展中。

$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 )

MSSQL扩展在使用PHP5.3或更高版本的Windows上不再可用。SQLSRV,MS SQL的替代驱动程序,可从Microsoft获得:»

原始答复:


GUI将它们标记为“已安装”这一事实意义不大。GUI工具可能认为它们已安装,但实际上没有安装。为了让PHP使用扩展名,需要在PHP.INI文件或PHP.INI加载的文件中指定它们。而且,如果在两个中都指定了它们,则可能只有一个在实际工作

使用
phpinfo()
可以检索
php.ini
的位置,您可以使用任何符合\n标准的文本编辑器(所以是写字板,而不是记事本)打开该位置,以查看实际位置

然后您需要检查它是如何加载扩展的

例如,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中还是在modules/SQLSERV.INI中(名称被忽略,但扩展名必须是.INI),您都需要

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


必要时,您可以尝试将设置为错误的DLL,以查看这是否会引发一些可识别的错误行为。如果有,您将确保该行已被解析,因此没有该行为意味着该行没有问题。

您可以从phpinfo添加您的扩展配置部分(sqlsrv)吗?您好@mim,我在phpinfo上找不到它-它应该在哪里?@mim-编辑问题;他们似乎没有上膛。如何解决这个问题?请检查php.ini,下面的代码显示php驱动程序所在的位置:
;在windows上:extension\u dir=“C:\xampp\php\ext”
所有php扩展在WAMPServer中都必须是线程安全的。因此,请删除所有我正在使用的
NTS
version。我的设置与那个问题完全一样。使用
php_info()
创建一个文件,您将获得扩展名列表。您的意思是
phpinfo()?我已经有一个了,看不到列表。问题已编辑;他们似乎没有上膛。如何解决此问题?您是否在本地工作?如果是,请在本地安装SQLExpress。