当前位置: 首页 > 知识库问答 >
问题:

在Wamp中“调用未定义的函数sqlsrv_connect()”,已安装驱动程序[重复]

张嘉熙
2023-03-14

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

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

我得到了以下错误:

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

我正在用PHP5.6运行Wamp。25,所以我安装了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 )

共有2个答案

姜宏盛
2023-03-14

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

原始答复:

致命错误:调用C:\xampp\htdocs中未定义的函数sqlsrv_connect()

裴楚青
2023-03-14

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

使用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,以及目录模块中的所有INI文件。当然,你的道路会有所不同。

无论是在PHP. INI中,还是在模块/SQLSERV. INI中(名称被忽略,但扩展名必须是. ini),您都需要有这样的东西

extension=php_sqlsrv_56_ts.dll
extension=php_pdo_sqlsrv_56_ts.dll

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

在紧要关头,您可以尝试设置一个错误的DLL,看看这是否会引起一些可识别的错误行为。如果是这样,您将确保该行被解析,因此没有这种行为意味着该行是好的。

 类似资料:
  • 我知道这个问题已经在这个网站上被问过几次了,但我真的开始怀疑我到底是不是疯了。 我的配置:WampServer 2.5 64位(PHP5.5.12,Apache 2.4.9) 我的步骤: 下载Microsoft驱动程序SQLSRV32.exe从https://www.microsoft.com/en-us/download/details.aspx?id=20098 从我的桌面上下载的. exe中

  • 我正在尝试连接到Azure数据库。我读过许多其他堆栈溢出的答案,但他们不适合我: -我已经下载了Azure提供给您的所有驱动程序。他们在 -我已将path to extensions文件夹添加到系统变量中。 -我已经在两个php中设置了扩展名。ini文件(在apache和php文件夹中)。 -扩展被设置为 扩展=php_sqlsrv_5X_ts.dll 扩展=php_pdo_sqlsrv_5X_t

  • 我有一个新安装的Wildfly10应用服务器在独立模式下运行。我需要部署一个需要MySQL JDBC驱动程序的项目。我按照在JDBC驱动程序安装中找到的教程安装了驱动程序(我选择了模块安装)。重新启动WildFly后,我在console.log中读到: 信息[org.jboss.as.connector.subsystems.datasources](ServerService线程池--33)WF

  • 我在连接PHP和在远程计算机上运行的SQL SERVER 2008时遇到了困难。我有php版本5.4。3和Apache2.2。22.我的计算机上已经运行了SQL SERVER 2008。我的wamp\bin\php\php5中包含以下文件。4.3\ext文件夹: php_sqlsrv_54_ts.dll php_pdo_sqlsrv_54_ts.dll 运行简单的代码,比如 我遇到以下错误: 但是

  • 我知道这是一个经常被问到的问题,但是我已经尝试了我找到的所有方法,但是仍然不起作用。 我在Windows 7(64位)和PHP 5.4.3上使用WAMP 2.2。当我在localhost中调用curl_init()时,我有这个错误消息: 我所做的: 检查WAMP的php扩展中的php\u curl 多次重新启动WAMP 移除;在extension=php\u curl之前。dll在我的两个php中

  • 问题内容: 我正在用Java编写数据库验证工具,并具有首选项屏幕,以便用户可以定义其数据库连接。该工具至少应能够应付DB2,Oracle,Postgresql和Mysql。 我真正想要的是能够向用户提供他们已安装的jdbc驱动程序列表,作为此过程的一部分。 任何人都可以提供用于发现已安装的JDBC驱动程序的代码段吗? 问题答案: 到目前为止,您需要扫描整个类路径(和子文件夹)以查找实现类的类。这样