PHP 7.2 + sqlsrv + string(237)“SQLSTATE[IMSSP]:此扩展需要 Microsoft ODBC Driver for SQL Server 才能与 SQL Server 通信

问题描述 投票:0回答:1

我需要使用 sqlsrv 从 PLESK CentOS 7 上的 PHP 7.2 连接到 SQL Server。

据我所知,我拥有我需要的一切。

1 - 我已经安装了

msodbcsql

 软件包

2 - 我已经安装了软件包:

unixODBC-devel make gcc-c++ gcc autoconf automake plesk-php7.2-devel libtool-ltdl.x86_64 libtool-ltdl-devel.x86_64


3 - 我添加了

pdo_sqlsrv

sqlsrv
 模块

4 - 我重读了 PHP 处理程序

5 - 我重新读取组件属性以使模块在 GUI 中可见

6 - 我已经检查过:

/opt/plesk/php/7.2/bin/php -m | grep sqlsrv


我明白了:

pdo_sqlsrv sqlsrv
7 - 我已重新启动 PHP-FPM 主进程以将更改应用到 FPM 站点

8 - 我已检查我有最新版本的 ODBC 驱动程序:

软件包 unixODBC-2.3.11-1.rh.x86_64 已安装并且是最新版本

unixODBC 2.3.11 DRIVERS............: /etc/odbcinst.ini SYSTEM DATA SOURCES: /etc/odbc.ini FILE DATA SOURCES..: /etc/ODBCDataSources USER DATA SOURCES..: /root/.odbc.ini
9 - 我已经检查过,路径 

ini

 中有 
php7.2
/opt/plesk/php/7.2/etc/php.d: odbc.ini
文件

但是当尝试从脚本连接时我仍然看到错误:

string(237)“SQLSTATE[IMSSP]:此扩展需要 Microsoft ODBC Driver for SQL Server 才能与 SQL Server 通信。访问以下 URL 以下载适用于 x64 的 ODBC Driver for SQL Server:

https://go.microsoft .com/fwlink/?LinkId=163712"

我的连接代码:

$params = [ "UID" => $username, "PWD" => $password, "Database" => $database, "TrustServerCertificate" => true ]; if(sqlsrv_connect($host, $params)) { echo "connected.."; } else { echo "Connection could not be established. DO not know why..sick!<br />"; echo "<pre>"; die( print_r( sqlsrv_errors(), true)); echo "</pre>"; }
适用于同一服务器(不同网络空间)上的 PHP8.0。

我错过了什么?

更新 - 更多信息:

为了调试,我锁定了对 MS SQL 服务器的远程访问 - 以确保问题是在 Apache/www 端还是 MS SQL 端。 错误没有改变 - 所以我确信问题出在网络服务器上的某个地方 - 但不知道出了什么问题..

php sql-server odbc plesk sqlsrv
1个回答
0
投票
我终于成功了。

出了什么问题?

第 1 步 - 我已经安装了

msodbcsql

 软件包

我做到了 - 我从

这里获取了有关它的信息。

# curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo # yum remove unixODBC-utf16 unixODBC-utf16-devel # ACCEPT_EULA=Y yum install msodbcsql18

ver 18 - Microsoft ODBC 18

。在我的研究中,我再次访问
here - 发现 php 驱动程序 5.8.1 无法与 Microsoft ODBC 18 一起使用。 之前已经错过了。

所以我已经安装了以前的

Microsoft ODBC 17


# curl https://packages.microsoft.com/config/rhel/7/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo # sudo yum remove unixODBC-utf16 unixODBC-utf16-devel #to avoid conflicts # sudo ACCEPT_EULA=Y yum install -y msodbcsql17 # sudo ACCEPT_EULA=Y yum install -y mssql-tools # echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc # source ~/.bashrc # sudo yum install -y unixODBC-devel
按照MS建议的

here,然后重新启动apache,我终于连接上了! :)

结论:

仔细检查驱动程序的版本,以确保它们可以协同工作。事实证明 - 这非常重要。

© www.soinside.com 2019 - 2024. All rights reserved.