PHP安装SqlServer扩展连接数据库

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
简介: docker 安装 php sqlsrv 扩展,sqlserver 驱动;aliyun linux安装 sqlserver odbc驱动,安装 php sqlsrv 扩展

要想使用 PHP 连接 SQLServer 需要安装 PHP 的 sqlsrv 的扩展以及 SQLServer 的驱动软件两个东西。注意这是两个是不同的安装包。

安装SQLServer驱动

查看驱动与PHP版本的对应关系:版本资料介绍

查看驱动安装步骤:英文版  中文版

以上两张图分别帮我们提供了在进行扩展及安装包选择时的依据。我的版本是PHP7.3,因此,ODBC的版本要选择17,否则安装后也仍然会提示缺少扩展。

这里以Docker PHP7.3的版本以及 Aliyun Linux 2.1903 LTS 64位为例介绍安装步骤。

Docker PHP7.3

在上述安装连接中,我们选择 Debian 版本进行安装操作:

sudosucurl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -#Download appropriate package for the OS version#Choose only ONE of the following, corresponding to your OS version#Debian 8 (only supported up to driver version 17.6)curl https://packages.microsoft.com/config/debian/8/prod.list > /etc/apt/sources.list.d/mssql-release.list
#Debian 9curl https://packages.microsoft.com/config/debian/9/prod.list > /etc/apt/sources.list.d/mssql-release.list
#Debian 10curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list
#Debian 11curl https://packages.microsoft.com/config/debian/11/prod.list > /etc/apt/sources.list.d/mssql-release.list
exitsudo apt-get update
sudoACCEPT_EULA=Y apt-get install -y msodbcsql17
# optional: for bcp and sqlcmdsudoACCEPT_EULA=Y apt-get install -y mssql-tools
echo'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headerssudo apt-get install -y unixodbc-dev
# optional: kerberos library for debian-slim distributionssudo apt-get install -y libgssapi-krb5-2


上文提供了不同的Debian 版本,此处我们选择 Debian 11 。

检查是否安装成功:

odbcinst -q-d-n"ODBC Driver 17 for SQL Server"


注意,这里的 UsageCount 当这个数值变为0时,即使你已经安装好了这个驱动,也会报找不到驱动。

卸载方法:

apt-get remove msodbcsql17
apt-get remove mssql-tools
同时删除 ./~bashrc 中的export path

Aliyun Linux 2.1903 LTS 64

因为Aliyun Linux 系统是兼容Red Hat 7.0 所以我们在这里选择7.0版本进行安装:

sudosu#Download appropriate package for the OS version#Choose only ONE of the following, corresponding to your OS version#Red Hat Enterprise Server 6 (only supported up to driver version 17.7)curl https://packages.microsoft.com/config/rhel/6/prod.repo > /etc/yum.repos.d/mssql-release.repo
#Red Hat Enterprise Server 7 and Oracle Linux 7curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo
#Red Hat Enterprise Server 8 and Oracle Linux 8curl https://packages.microsoft.com/config/rhel/8/prod.repo > /etc/yum.repos.d/mssql-release.repo
exitsudo yum remove unixODBC-utf16 unixODBC-utf16-devel #to avoid conflictssudoACCEPT_EULA=Y yum install -y msodbcsql17
# optional: for bcp and sqlcmdsudoACCEPT_EULA=Y yum install -y mssql-tools
echo'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headerssudo yum install -y unixODBC-devel


安装 PHP sqlsrv 扩展

Docker 安装

## 创建并初始化 /usr/src/php目录docker-php-source extract
## 此处可环卫你自己的pathcd /tmp
## 下载扩展  下载扩展地址:https://pecl.php.net/package/pdo_sqlsrvcurl-L-o /tmp/pdo_sqlsrv.tgz  https://pecl.php.net/get/pdo_sqlsrv-5.9.0.tgz
curl-L-o /tmp/sqlsrv.tgz  https://pecl.php.net/get/sqlsrv-5.9.0.tgz
## 解压tar zxvf pdo_sqlsrv.tgz
tar zxvf sqlsrv.tgz
## 移动到php扩展目录 mv pdo_sqlsrv-5.9.0  /usr/src/php/ext/pdo_sqlsrv
mv sqlsrv-5.9.0  /usr/src/php/ext/sqlsrv
## 安装扩展docker-php-ext-install pdo_sqlsrv
docker-php-ext-install sqlsrv
## 查看扩展是否安装上php -m |grep sqlsrv
## 重启php容器,扩展已经安装完毕



Aliyun Linux 2.1903 LTS 64

此处PHP因为我是使用的 yum 直接安装的,因此在安装扩展的时候也是使用 yum 的方式进行安装,推荐大家使用这种方式进行安装,可以省掉很多不必要的麻烦。

#安装yum install php73-php-sqlsrv
#检查是否安装成功php -m |grep sqlsrv
#重启systemctl restart php73-php-fpm


常见问题

1、TSL版本导致的连接安全性问题

[08001][Microsoft][ODBC Driver 17for SQL Server]SSL Provider: [OpenSSL library could not be loaded, make sure OpenSSL 1.0 or 1.1 is installed]
[08001][Microsoft][ODBC Driver 17for SQL Server]Client unable to establish connection (0) (SQLDriverConnect)


解决方法:

找到/etc/ssl/openssl.cnf 后,找到 system_default_sect 节点后,加入或修改为以下即可:

[system_default_sect]
MinProtocol = TLSv1.0
CipherString = DEFAULT@SECLEVEL=2


相关文章
|
2月前
|
SQL Java 关系型数据库
Java连接MySQL数据库环境设置指南
请注意,在实际部署时应该避免将敏感信息(如用户名和密码)硬编码在源码文件里面;应该使用配置文件或者环境变量等更为安全可靠地方式管理这些信息。此外,在处理大量数据时考虑使用PreparedStatement而不是Statement可以提高性能并防止SQL注入攻击;同时也要注意正确处理异常情况,并且确保所有打开过得资源都被正确关闭释放掉以防止内存泄漏等问题发生。
113 13
|
2月前
|
SQL 关系型数据库 MySQL
MySQL数据库连接过多(Too many connections)错误处理策略
综上所述,“Too many connections”错误处理策略涉及从具体参数配置到代码层面再到系统与架构设计全方位考量与改进。每项措施都需根据具体环境进行定制化调整,并且在执行任何变更前建议先行测试评估可能带来影响。
856 11
|
4月前
|
SQL XML Java
配置Spring框架以连接SQL Server数据库
最后,需要集成Spring配置到应用中,这通常在 `main`方法或者Spring Boot的应用配置类中通过加载XML配置或使用注解来实现。
407 0
|
7月前
|
Oracle 安全 关系型数据库
【Oracle】使用Navicat Premium连接Oracle数据库两种方法
以上就是两种使用Navicat Premium连接Oracle数据库的方法介绍,希望对你有所帮助!
1471 28
|
7月前
|
SQL 数据库连接 数据库
在C++的QT框架中实现SQLite数据库的连接与操作
以上就是在C++的QT框架中实现SQLite数据库的连接与操作的基本步骤。这些步骤包括创建数据库连接、执行SQL命令、处理查询结果和关闭数据库连接。在实际使用中,你可能需要根据具体的需求来修改这些代码。
421 14
|
2月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
112 3
|
2月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
2月前
|
关系型数据库 MySQL 分布式数据库
阿里云PolarDB云原生数据库收费价格:MySQL和PostgreSQL详细介绍
阿里云PolarDB兼容MySQL、PostgreSQL及Oracle语法,支持集中式与分布式架构。标准版2核4G年费1116元起,企业版最高性能达4核16G,支持HTAP与多级高可用,广泛应用于金融、政务、互联网等领域,TCO成本降低50%。