Wamp中的“调用未定义函数sqlsrv_connect()”,已安装驱动程序[重复]
Posted
技术标签:
【中文标题】Wamp中的“调用未定义函数sqlsrv_connect()”,已安装驱动程序[重复]【英文标题】:"Call to undefined function sqlsrv_connect()" in Wamp, drivers installed [duplicate] 【发布时间】:2017-03-30 12:47:51 【问题描述】:我的 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 中显示为活动状态:
那么为什么它不起作用?
编辑:它们没有出现在加载的扩展程序中。
$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 )
【问题讨论】:
你能从 phpinfo 添加你的扩展配置部分(sqlsrv)吗? 嗨@mim,我在 phpinfo 上的任何地方都找不到 - 它应该在哪里? @mim - 问题已编辑;他们似乎没有被加载。我该如何解决这个问题? 检查 php.ini,下面的代码显示了 php 驱动程序所在的位置:; On windows: extension_dir="C:\xampp\php\ext"
所有 PHP 扩展在 WAMPServer 中必须是线程安全的。所以删除所有那些NTS
版本
【参考方案1】:
您的 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,看看这是否会引发一些可识别的错误行为。如果是这样,您将确定该行已被解析,因此 not 具有该行为意味着该行正常。
【讨论】:
【参考方案2】:MSSQL 扩展在 PHP 5.3 或更高版本的 Windows 上不再可用。 SQLSRV,Microsoft 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
【讨论】:
这些是我正在使用的。我的设置完全按照那个问题。 用php_info()
创建一个文件你会得到扩展名列表。
你的意思是phpinfo();
?我已经有一个,看不到它们列出来。
问题已编辑;他们似乎没有被加载。我该如何解决这个问题?
你在本地工作吗,如果是的话。然后在本地安装SQLExpress。以上是关于Wamp中的“调用未定义函数sqlsrv_connect()”,已安装驱动程序[重复]的主要内容,如果未能解决你的问题,请参考以下文章