Ubuntu 中安装 SQL Server 及相应的 PHP 扩展

分类: 系统
日期: 2022-03-14
浏览: 1059

最近为公司开发了一套供内部使用的扫码系统,对接了多个平台,需要连接 SQL Server 数据库,软件和扩展的安装不复杂,但是有些小坑,将安装过程在此记录一下。

安装 Microsoft ODBC Driver for SQL Server

参考文档:安装 Microsoft ODBC Driver for SQL Server (Linux)

目前建议安装 Microsoft ODBC 17,18 会出现 ssl 相关的错误,暂时还不知道如何解决。

sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list > /etc/apt/sources.list.d/mssql-release.list
exit

sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql17
sudo ACCEPT_EULA=Y apt-get install -y mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc

# 使用 PHP-FPM 一定要安装
sudo apt-get install -y unixodbc-dev

使用 PHP-FPM 一定要安装 unixodbc-dev,若未安装,可能会报以下错误。

fatal error: sql.h: No such file or directory_taoing

安装 PHP 扩展

参考文档:在 Linux 和 macOS 上安装 Drivers for PHP

多版本 PHP 共存的情况下使用以下命令安装:

sudo pecl -d php_suffix=8.0 install sqlsrv
sudo pecl uninstall -r sqlsrv
sudo pecl -d php_suffix=8.0 install pdo_sqlsrv
sudo pecl uninstall -r pdo_sqlsrv

只有一个默认版本的情况使用以下命令安装:

sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv

启用扩展

sudo su
printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/8.0/mods-available/sqlsrv.ini
printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.0/mods-available/pdo_sqlsrv.ini
exit

sudo phpenmod -v 8.0 sqlsrv pdo_sqlsrv

报错

报以下错误,应该是新系统升级了 openssl 的版本,提高了最低安全协议的版本,低版本的 ssl 不再被支持。

SQLSTATE[08001]: [Microsoft][ODBC Driver 17 for SQL Server]SSL Provider: [error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol]

解决方案

修改配置文件 /etc/ssl/openssl.cnf

在文件靠前的位置添加以下内容

openssl_conf = default_conf

[default_conf]
ssl_conf = ssl_sect

[ssl_sect]
system_default = system_default_sect

[system_default_sect]
MinProtocol = TLSv1
CipherString = DEFAULT@SECLEVEL=1
版权声明
作者:不二
来源:不二博客
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论
赶快发表评论吧~
发表评论