首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >XAMPP/ Sqlsrv :无法在PHPINFO()中找到Sqlsrv;-来自连接的错误

XAMPP/ Sqlsrv :无法在PHPINFO()中找到Sqlsrv;-来自连接的错误
EN

Stack Overflow用户
提问于 2022-05-13 09:52:44
回答 1查看 720关注 0票数 0

我正在尝试连接到我在Linux上托管的一个Server。我在我的开发窗口机器上运行xampp,连接来自我正在构建的php站点。我想我需要用sqlsrv来连接。我从https://learn.microsoft.com/en-us/sql/connect/php/download-drivers-php-sql-server?view=sql-server-ver15&viewFallbackFrom=sql-server-2019下载了dll

我已经将必要的dll文件移到了我的xampp\php\etc\目录中。我还验证了php.ini文件中的扩展目录是extension_dir="C:\xampp\php\ext"

以下内容已添加到php.ini的php.ini部分:

代码语言:javascript
运行
复制
extension=php_sqlsrv_81_ts_x86.dll
extension=php_pdo_sqlsrv_81_ts_x86.dll
extension=php8ts.dll

我在网上找到了关于删除php_前缀、删除.dll后缀、使用ts或非ts、将所有文件移到扩展名目录中、只将上面列出的一对文件移到目录中(不包括php8ts.dll )等信息。我尝试了上述各种配置,包括逻辑配置和非逻辑配置。

下面是我的站点的一个示例连接代码:

代码语言:javascript
运行
复制
$conn = new PDO('sqlsrv:Server=my_server_ip\\MSSQLSERVER;Database=dbname', 'username', 'password');
if ($conn === false) {
    echo "Error (sqlsrv_connect): ".print_r(sqlsrv_errors(), true);
    exit;
} else {
    echo "success";
}

我尝试过多个不同的连接例子。通过上面的一个,我收到了以下错误:

PDO->__construct('sqlsrv:Server=my_server_ip',致命错误: Uncaught :未能在C:\xampp\htdocs\site\index.php:123堆栈跟踪中找到驱动程序:#0 C:\xampp\htdocs\site\index.php( 123 ):在第123行C:\xampp\htdocs\site\index.php中抛出的C:\xampp\htdocs\site\index.php‘用户名’、‘密码’#1 {main}

从这里开始,我从逻辑上认为,好的,让我们通过回显它来检查phpinfo();。列表中的任何位置都没有列出sqlsrv或PDO变体。即使是sqlsrv页面上的ctrl+f,也只能找到上面的错误。

我已经证实我已经安装了ODBC驱动程序。

我尝试过的其他事情是使用sqlsrv_connect而不是PDO。对于我的php版本(8.1),我发现这方面的信息相互矛盾,但是我们还是尝试一下吧。然而,当我遇到这个变体时,我得到:

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

在我看来,我的.dlls显然没有被识别或者类似的东西。然而,我无法为我的生命明白为什么。我已经验证了一切都是以admin的形式运行,多次重新启动xampp,删除/重新下载dll等等。

有人能指出我可能没有想到的突出问题吗?

EN

Stack Overflow用户

回答已采纳

发布于 2022-05-13 22:46:57

解决了。有两个问题。

  1. 我的Xampp安装已经损坏。它不会识别我在页面上使用echo phpinfo();时注意到的任何新DLL.

  1. ini文件配置出于某种原因试图使用x86 dll而不是x64,即使扩展名是在ini中作为x64.

编写的。

解决的步骤:

  1. I使用默认设置重新安装和重新配置Xampp,而dll的dll现已被识别。

  1. I从Xampp.

的扩展目录中删除了x86 dll。

最后一个php.ini是这样的:

代码语言:javascript
运行
复制
extension=php_sqlsrv_81_ts_x64.dll
extension=php_pdo_sqlsrv_81_ts_x64.dll
extension=php8ts.dll
extension=php_pdo_odbc.dll
extension=php_pdo.dll

使用最终的.dll可能是多余的,但它仍然按预期工作。确保验证sqlsrv或pdo_sqlsrv的正确版本,因为可能会出现与phpversion的兼容性问题。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72227644

复制
相关文章

相似问题

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