Php 致命错误:未捕获PDO异常:SQLSTATE[IMSSP]:此扩展需要用于SQL Server的Microsoft ODBC驱动程序与SQL Server通信

Php 致命错误:未捕获PDO异常:SQLSTATE[IMSSP]:此扩展需要用于SQL Server的Microsoft ODBC驱动程序与SQL Server通信,php,pdo,Php,Pdo,我正在尝试从Cpanel开启的Linux Centos7连接到远程SQL Server 我已经安装了pdo_sqlsrv,它在Php信息中 根据以下输出,我已为SQL Server安装了ODBC驱动程序11: [root@myserver ~]# odbcinst -q -d -n "ODBC Driver 11 for SQL Server" [ODBC Driver 11 for SQL Server] Description=Microsoft ODBC Driver

我正在尝试从Cpanel开启的Linux Centos7连接到远程SQL Server

我已经安装了pdo_sqlsrv,它在Php信息中

根据以下输出,我已为SQL Server安装了ODBC驱动程序11:

[root@myserver ~]# odbcinst -q -d -n "ODBC Driver 11 for SQL Server"
[ODBC Driver 11 for SQL Server]
Description=Microsoft ODBC Driver 11 for SQL Server
Driver=/opt/microsoft/msodbcsql/lib64/libmsodbcsql-11.0.so.2270.0
Threading=1
UsageCount=1
但我的PHP脚本显示:

致命错误:未捕获PDO异常:SQLSTATE[IMSSP]:此扩展需要用于SQL Server的Microsoft ODBC驱动程序与SQL Server通信。访问以下URL下载x64的SQL Server ODBC驱动程序:in/home/mysite/public_html/dev/stock import.php:17堆栈跟踪:#0/home/mysite/public_html/dev/stock import.php(17):PDO->u构造('sqlsrv:Server=1…','myusername','mypassword')#1{main}在第17行抛出/home/mysite/public_html/dev stock-import.php

所以它被安装了

有什么想法吗

PHP代码是:

$dbh = new PDO( "sqlsrv:Server=$server:$port", $user, $pass );
更新:实际上,在安装SQL Server的ODBC驱动程序11之前,我经常遇到的错误是安装SQL Server的ODBC驱动程序11,特别是版本11,但在安装版本11之后,错误不会显示版本

更新:如果我使用odbc\u connect,我会得到:

odbc_connect():SQL错误:[unixODBC][Microsoft][SQL Server的odbc驱动程序11]登录超时已过期,SQL connect中的SQL状态为S1T00


更新:它正在工作。我已经卸载了ODBC管理器2.3.0和驱动程序11,安装了ODBC管理器2.3.7和驱动程序17,现在可以正常工作了。

但不是这样,我连连接都没有那么远。为了避免混淆,我们删除了这一行,同样的错误。还将代码更改为以下内容,而不运行任何数据库查询,并得到相同的错误$conn=sqlsrv_connect($serverName,$connectionOptions);如果($conn){echo“连接已建立。
“;}否则{echo”连接无法建立。
“die(print_r(sqlsrv_errors(),true));}您的Linux系统的位体系结构是什么:32还是64?您需要下载与PHP客户端(而不是服务器)操作系统和位类型一致的ODBC驱动程序。第一个错误表明驱动程序不兼容。ODBC驱动程序11是一个较旧的版本,主要用于Windows for MSSQL。现在还不清楚在线使用什么版本。微软的安装说明没有提到,我想没有。我遵循了一些说明,错误是安装了版本11。我已经卸载了ODBC Manager 2.3.0和驱动程序11,安装了ODBC Manager 2.3.7和驱动程序17,现在可以连接到Azure数据库。是的,请始终查看最新的ODBC版本,这些版本通常向后兼容。