This extension requires the Microsoft ODBC Driver for SQL Server to communicate with SQL Server 我在使用LUMEN对接SQL-SERVER遇到的问题,以下是我的安装以及排错记录
CentOS 安装 PHP 7.3 连接 SQL Server 的完整步骤
环境:
- 操作系统:CentOS
- PHP 版本:7.3
- 目标:配置 PHP 通过
sqlsrv
和 ODBC 驱动连接 Microsoft SQL Server
1. 安装 EPEL 仓库
EPEL 仓库提供了一些额外的软件包,可能是必要的依赖。使用以下命令安装:
sudo yum install epel-release
2. 添加 Microsoft SQL Server 仓库
要安装 Microsoft ODBC 驱动,你需要首先添加 Microsoft 的官方仓库:
sudo curl https://packages.microsoft.com/config/rhel/7/prod.repo -o /etc/yum.repos.d/mssql-release.repo
3. 安装 ODBC 驱动程序
从 Microsoft 仓库中安装 ODBC 驱动程序(注意 ACCEPT_EULA=Y
表示同意微软的协议):
sudo ACCEPT_EULA=Y yum install msodbcsql17
4. 安装 unixODBC
库及开发工具(如果还没有)
安装 unixODBC
及其开发工具:
sudo yum remove unixODBC # 先移除系统自带的旧版本 sudo yum install unixODBC unixODBC-devel
5. 安装 PHP 7.3 的 sqlsrv
和 pdo_sqlsrv
扩展
确保你使用的是 PHP 7.3 的正确扩展。执行以下命令:
sudo yum install php73-php-sqlsrv php73-php-pdo_sqlsrv
如果系统找不到这些包,请先启用
remi
仓库:
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm sudo yum install php73-php-sqlsrv php73-php-pdo_sqlsrv
6. 配置 ODBC 驱动
编辑 /etc/odbcinst.ini
文件,确保 Microsoft SQL Server ODBC 驱动已正确配置。添加以下内容:
[ODBC Driver 17 for SQL Server] Description=Microsoft ODBC Driver 17 for SQL Server Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.7.so.2.1
然后,在 /etc/odbc.ini
中配置一个 DSN(数据源名称),例如:
[MyMSSQLServer] Driver = ODBC Driver 17 for SQL Server Server = your_sql_server_ip_or_hostname Database = your_database_name Port = 1433
7. 测试 ODBC 连接
使用 isql
测试 ODBC 驱动和 SQL Server 的连接:
isql -v MyMSSQLServer username password
如果连接成功,说明 ODBC 驱动已经正确配置。
8. 检查 PHP 扩展是否加载
确认 PHP 是否正确加载了 sqlsrv
和 pdo_sqlsrv
扩展:
php -m | grep sqlsrv php -m | grep pdo_sqlsrv
如果扩展未加载,在 PHP 的 php.ini
文件中手动启用扩展:
extension=sqlsrv.so extension=pdo_sqlsrv.so
9. 重启 Web 服务器
安装和配置完成后,重启你的 Web 服务器:
sudo systemctl restart nginx # 或 Apache,取决于你使用的服务器 sudo systemctl restart php-fpm
10. 查看 PHP 错误日志
如果仍有问题,可以查看 PHP 的错误日志来获取更多信息:
tail -f /var/log/php-fpm/www-error.log
排查问题的其他建议
检查 ODBC 驱动是否正确安装:
运行以下命令查看已安装的 ODBC 驱动:
odbcinst -q -d
如果看到 ODBC Driver 17 for SQL Server
,说明 ODBC 驱动已正确安装。
重新安装相关依赖:
如果问题仍然存在,可能需要重新安装 PHP 7.3 扩展或 ODBC 驱动。
sudo yum remove msodbcsql17 php73-php-sqlsrv php73-php-pdo_sqlsrv
sudo ACCEPT_EULA=Y yum install msodbcsql17
sudo yum install php73-php-sqlsrv php73-php-pdo_sqlsrv
结论
通过以上步骤,应该能够成功解决 SQLSTATE[IMSSP]: This extension requires the Microsoft ODBC Driver for SQL Server
的错误,确保 PHP 7.3 能够正确连接 Microsoft SQL Server。如果遇到任何进一步的问题,可以参考系统日志进行详细排查。