致命错误:使用 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.dll
和 php_sqlsrv_55_ts.dll
从未压缩的驱动程序文件夹复制到 PHP 扩展文件夹(在我的场景中为 X:\xampp\php\ext
)。
在PHP.ini
文件中添加extension=php_pdo_sqlsrv_55_ts.dll
和extension=php_sqlsrv_55_ts.dll
。
启动 Apache。
同时,您可以使用phpinfo()
检查Loaded Configuration File
和extension_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 秒的最大执行时间