首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >致命错误:未定义错误:调用未定义函数sqlsrv_connect()

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

Stack Overflow用户
提问于 2017-11-03 19:47:56
回答 1查看 21.4K关注 0票数 2

我试图连接到一个我们可以通过“”访问的Server:

我试过很多不同的东西,但都没有用。在Fatal error: Uncaught Error: Call to undefined function sqlsrv_connect() in C:\Apache24\htdocs\test.php:52 Stack trace: #0 {main} thrown in C:\Apache24\htdocs\test.php on line 52页面上运行以下代码时,我会得到错误的test.php

代码语言:javascript
运行
复制
$serverName = "SERVER.DOMAIN.COM, 1433"; //serverName\instanceName, portNumber (default is 1433)
$connectionInfo = array( "Database"=>"DB_NAME", "UID"=>"USER", "PWD"=>"PASS");
$ma_conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $ma_conn ) {
     echo "Connection established.<br />";
}else{
     echo "Connection could not be established.<br />";
     die( print_r( sqlsrv_errors(), true));
}

我的php.ini文件经历了许多不同的扩展名正在启用,但没有一个工作。我试过以下所有的方法:

代码语言:javascript
运行
复制
extension = php_sqlsrv_56_ts.dll
extension=php_sqlsrv_55_ts.dll
extension=php_sqlsrv_55_nts.dll
extension=php_sqlsrv_55_ts.dll
extension=php_pdo_sqlsrv_55_ts.dll
extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll

目前我有:

代码语言:javascript
运行
复制
extension_dir = "c:\apache24\php7\ext\"
extension=php_pdo.dll
extension=php_pgsql.dll
[PHP_SQLSRV]
extension=php_sqlsrv_54_ts.dll
[PHP_PDO_SQLSRV]
extension=php_pdo_sqlsrv_54_ts.dll

在CMD中使用Apache和PHP的机器上,我得到以下信息:

代码语言:javascript
运行
复制
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.

C:\Windows\system32>php -c c:\apache24\php7\php.ini -v -display_startup_errors=1

PHP Warning:  PHP Startup: Unable to load dynamic library 'c:\apache24\php7\ext\ php_pdo.dll' - %1 is not a valid Win32 application.
 in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'c:\apache24\php7\ext\ php_sqlsrv_54_ts.dll' - %1 is not a valid Win32 application.
 in Unknown on line 0 PHP
Warning:  PHP Startup: Unable to load dynamic library 'c:\apache24\php7\ext\ php_pdo_sqlsrv_54_ts.dll' - %1 is not a valid Win32 application.
 in Unknown on line 0
PHP 7.0.10 (cli) (built: Aug 18 2016 09:48:53) ( ZTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies

C:\Windows\system32>

我还在SQLSRV32.EXE文件夹中下载并运行了C:\Apache24\php7\ext

我有:

  • Windows 2012 RS win64
  • Apache2.4.23 win64
  • PHP7.0.10 win64
  • 2012本机客户端win64
  • 微软Visual C++ 2012 x64 & x86再发行版(两种不同的)
  • 微软Visual C++ 2015再发行版(x64 & x86) - 14.0.23026
  • 用于Server的Microsoft驱动程序11

EN

回答 1

Stack Overflow用户

发布于 2017-11-03 22:10:09

按照php.ini (php_sqlsrv_XX_ts.dll)中的尝试列表,您已经激活了PHPV5.5和v5.6的扩展。但是,由于您正在运行PHP7.0,所以需要下载并激活相应的用于SQL Server的PHP驱动程序。您似乎需要下载驱动程序Version4.0。这是在SQLSRV扩展的php.net页面上说明的。

微软支持SQLSRV扩展,可以在这里下载:http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx

在这里,您可以找到加载PHP驱动程序的说明。您可能会收到一个类似于php_sqlsrv_7_XX.dllXX文件:"ts“或"nts”(线程安全或非线程安全)。我想你需要线程安全版本。

否则,使用MS SQL Server (PDO) PDO驱动程序(阅读链接中的“安装”部分!)具有SQLSRV (连接字符串)和PDO通用功能,例如对所有驱动程序通用的功能。驱动程序将以extension=php_pdo_sqlsrv_7_ts.dll的形式添加到extension=php_pdo_sqlsrv_7_ts.dll中(查看相同的页面以获得说明:加载PHP驱动程序)。如果你问我,我真的会选择这个选择。

Nota Bene:不要忘记在信任的每个更改之后重新启动web服务器和/或db服务!

祝好运。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47103452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档