Lumen|LARAVEL|PHP-This extension requires the Microsoft ODBC Driver for SQL Server to communicate

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 的 sqlsrvpdo_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 是否正确加载了 sqlsrvpdo_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。如果遇到任何进一步的问题,可以参考系统日志进行详细排查。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值