PHP安装SqlServer扩展连接数据库

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: 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


相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
3月前
|
存储 SQL 关系型数据库
PHP与数据库交互:从基础到进阶
【10月更文挑战第9天】在编程的世界里,数据是流动的血液,而数据库则是存储这些珍贵资源的心脏。PHP作为一门流行的服务器端脚本语言,其与数据库的交互能力至关重要。本文将带你从PHP与数据库的基本连接开始,逐步深入到复杂查询的编写和优化,以及如何使用PHP处理数据库结果。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供宝贵的知识和技巧,让你在PHP和数据库交互的道路上更加从容不迫。
|
4天前
|
开发框架 小程序 前端开发
圈子社交app前端+后端源码,uniapp社交兴趣圈子开发,框架php圈子小程序安装搭建
本文介绍了圈子社交APP的源码获取、分析与定制,PHP实现的圈子框架设计及代码编写,以及圈子小程序的安装搭建。涵盖环境配置、数据库设计、前后端开发与接口对接等内容,确保平台的安全性、性能和功能完整性。通过详细指导,帮助开发者快速搭建稳定可靠的圈子社交平台。
|
2月前
|
Java 程序员 PHP
01 入门PHP就来我这-安装phpstudy
路老师的PHP入门教程,带你从零开始学习PHP。首先下载并安装phpStudy,接着配置域名和端口,最后创建并运行第一个PHP文件。内容详实,适合初学者。
52 3
01 入门PHP就来我这-安装phpstudy
|
3月前
|
NoSQL MongoDB PHP
PHP7 MongDB 安装与使用
10月更文挑战第19天
41 1
PHP7 MongDB 安装与使用
|
2月前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
46 1
|
3月前
|
NoSQL 安全 Linux
MongoDB PHP 扩展
10月更文挑战第19天
16 0
MongoDB PHP 扩展
|
3月前
|
tengine 应用服务中间件 Linux
Tengine、Nginx安装PHP命令教程
要在阿里云Linux上安装PHP,请先更新YUM源并启用PHP 8.0仓库,然后安装PHP及相关扩展。通过`php -v`命令验证安装成功后,需修改Nginx配置文件以支持PHP,并重启服务。最后,创建`phpinfo.php`文件测试安装是否成功。对于CentOS系统,还需安装EPEL源和Remi仓库,其余步骤类似。完成上述操作后,可通过浏览器访问`http://IP地址/phpinfo.php`测试安装结果。
|
3月前
|
测试技术 PHP 开发工具
php性能监测模块XHProf安装与测试
【10月更文挑战第13天】php性能监测模块XHProf安装与测试
39 0
|
4月前
|
PHP Windows
thinkPhP6.0安装教程图解--PHP框架安装
本文是一篇关于ThinkPHP 6.0安装教程的图解,包括环境检查、安装Composer、修改Composer镜像地址、安装ThinkPHP框架以及启动运行ThinkPHP的步骤。文章详细描述了每个步骤的操作方法,并提供了相应的命令和截图,帮助用户理解并顺利完成ThinkPHP 6.0的安装和运行。
thinkPhP6.0安装教程图解--PHP框架安装
|
4月前
|
SQL 关系型数据库 数据库连接
php连接数据库之PDO,PDO的简单使用和预定义占位符的使用以及PDOStatement对象的使用,占位符的不同形式,bindValue和bindParam绑定预定义占位符参数的区别
本文介绍了PHP中PDO(PHP Data Objects)扩展的基本概念和使用方法。内容包括PDO类和PDOStatement类的介绍,PDO的简单使用,预定义占位符的使用方法,以及PDOStatement对象的使用。文章还讨论了绑定预定义占位符参数的不同形式,即bindValue和bindParam的区别。通过具体示例,展示了如何使用PDO进行数据库连接、数据查询、数据插入等操作。
php连接数据库之PDO,PDO的简单使用和预定义占位符的使用以及PDOStatement对象的使用,占位符的不同形式,bindValue和bindParam绑定预定义占位符参数的区别