致命错误:使用 wamp php 5.5.12 调用未定义函数 sqlsrv_connect()

Posted

技术标签:

【中文标题】致命错误:使用 wamp php 5.5.12 调用未定义函数 sqlsrv_connect()【英文标题】:Fatal error: Call to undefined function sqlsrv_connect() using wamp php 5.5.12 【发布时间】:2016-08-26 11:40:32 【问题描述】:

我正在尝试连接到 Azure 数据库。我已经阅读了许多其他堆栈溢出答案,但它们对我不起作用:

-我已经下载了 Azure 提供给你的所有驱动程序。他们在

C:\wamp\bin\php\php5.5.12\ext 文件夹:

-我已将扩展文件夹的路径添加到系统变量中。

-我已经在两个 php.ini 文件中设置了扩展名(在 apache 和 php 文件夹内)。

- 扩展名已设置为

extension=php_sqlsrv_5X_ts.dll extension=php_pdo_sqlsrv_5X_ts.dll 和类似 extension=C:/wamp/bin/php/php5.5.12/ext/php_sqlsrv_5X_ts.dll extension=C:/wamp/bin/php/php5.5.12/ext/php_pdo_5X_ts.dll

其中X表示我尝试过53、54、55和56。

-每次尝试新更改时,我都会重新启动所有 wamp 服务。

-我什至尝试过使用 IISExpress。

-它仍然给我这个错误,当我使用phpinfo()时我看不到“sqlsvr”。

我还应该做什么?我已经为此受苦了好几个星期了。

【问题讨论】:

扩展版本应该与您的 PHP 运行时版本完全匹配。如果你使用的是非线程安全的 PHP 5.5,你应该安装php_sqlsrv_55_nts.dll。能否请您确认您的 PHP 版本? 是的,我使用的是 5.5,您可以在问题标题和扩展路径中看到它。我尝试过使用 php_sqlsrv_55_nts.dll,但不仅如此,我还尝试过其他版本,因为它不起作用。 根据您的问题描述,您使用了php_sqlsrv_5X_ts.dll,但没有使用php_sqlsrv_5X_nts.dll。那里不一样。你能确认一下吗? 当我使用它时我不能得到错误:PHP 启动:无法加载动态库:prntscr.com/azw7aj 当您收到此错误时,表示您使用了与您的系统不匹配的错误版本库。你应该检查你的系统版本,例如,如果你的系统是 64 位的,你应该使用 X64 版本的 DLL libaray。否则需要使用X86版本。 【参考方案1】:

我在https://www.apachefriends.org/download.html 使用此XAMPP 和PHP 5.5.34 来进行测试以启用PHP 的sqlsrv 扩展。

你可以参考我的步骤:

    安装XAMPP应用程序后,运行xampp-control.exe,点击config=>PHP(php.ini)查看扩展文件夹。 从https://msdn.microsoft.com/en-us/library/cc296170%28v=sql.105%29.aspx?f=255&MSPPError=-2147217396下载适用于PHP 3.2版本的MSSQL驱动程序。解压。 将 php_pdo_sqlsrv_55_ts.dllphp_sqlsrv_55_ts.dll 从未压缩的驱动程序文件夹复制到 PHP 扩展文件夹(在我的场景中为 X:\xampp\php\ext)。 在PHP.ini文件中添加extension=php_pdo_sqlsrv_55_ts.dllextension=php_sqlsrv_55_ts.dll。 启动 Apache。

同时,您可以使用phpinfo()检查Loaded Configuration Fileextension_dir的设置,以确保您在确定的文件和正确文件夹中的DLL文件中配置了正确的设置。

【讨论】:

我想用 wamp 来做这件事,因为我在工作中使用它,有时我使用我的电脑在家工作。但我可以试试这个作为最后的手段。 好的,我无法使用 wamp 完成它,所以我最终安装了 xamp。现在 sqlsrv_connect() 可以工作,但出现致命错误:调用未定义的函数 FormatErrors()。有什么想法吗? 看来FormatErrors()不是一个标准的PHP函数,你可以检查一下你的文件是否被完整的包含了,否则你可以尝试使用var_dump(sqlsrv_errors())来代替。 好的,非常感谢它有效!我现在必须检查我是否可以完成所有基本操作。昨天我在插入数据时遇到了问题。【参考方案2】:

我参考了这个帖子里Jordi留言的做法:Fatal error: Call to undefined function sqlsrv_connect() in C:\xampp\htdocs

xampp3.2.1 + php 5.5 + sql server 2014 Express,x64。

我的情况是,将 xampp 文件夹移植到一台全新的计算机上。

    完成所有需要做的事情。 (下载 SQLSRV 5.6(或 5.3 或..),检查 php.ini 路径,...) 下载并安装OBDC Driver 13(x64)(或者你可以试试OBDC Driver 11(x64)) 下载安装SQL Server® 2014 Service Pack 3 (x64),需要重启电脑。 下载并安装 Visual C++ Redistributable VS2012 Update4 (x86) 重启 Apache

然后就可以工作了!!!!!!

我这几天一直在寻找解决这个问题的方法,希望能帮助更多的人。

【讨论】:

以上是关于致命错误:使用 wamp php 5.5.12 调用未定义函数 sqlsrv_connect()的主要内容,如果未能解决你的问题,请参考以下文章

没有解决方案适用于我的 wamp 服务器错误:致命错误:第 239 行的 D\...\class-wp-http-curl.php 中的最大执行时间超过 60 秒

WAMP 2.2e - phpmyadmin 致命错误:超过 30 秒的最大执行时间

如何更改 WAMP 中 phpMyAdmin 中所说的语言?

PHP - 致命错误:无法在写入上下文中使用方法返回值

致命错误:超出最大执行次数

使用 ODBC 使用 msaccess 创建 PHP PDO 连接时出现致命错误