php - Wamp 中的 "Call to undefined function sqlsrv_connect()",已安装驱动程序

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

<分区>

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

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

最佳答案

您的 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,看看是否会引发一些可识别的错误行为。如果是,您将确定该行已被解析,因此没有该行为意味着该行没问题。

关于php - Wamp 中的 "Call to undefined function sqlsrv_connect()",已安装驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40630130/

相关文章:

php - 有没有比附加 sql 字符串更好的方法来生成条件 sql?

sql-server - dotnet ef 数据库更新中与网络相关或特定于实例的错误

sql-server - 如何在 t-sql 中进行透视和计算百分比?

wordpress - 从新 Wordpress 媒体管理器的附件详细信息中删除字段

wordpress - wp_query 和 meta_query 用于转发器字段值

盒子内的 CSS WordPress 盒子

php - 是否可以使数组的元素动态化?

php - 检查值是否为 isset 和 null

php - 在 JsonSerializable 中编码克隆 $this

sql-server - 在所有数据库上授予相同的数据库角色 SQL Server 2008 R2