我需要使用 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
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:我的连接代码:
$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 端。 错误没有改变 - 所以我确信问题出在网络服务器上的某个地方 - 但不知道出了什么问题..
出了什么问题?
第 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建议的结论:仔细检查驱动程序的版本,以确保它们可以协同工作。事实证明 - 这非常重要。