Linux - PHP 7.0 和 MSSQL (Microsoft SQL)

2022-08-30 11:20:35

是的,我知道PHP 7.0删除了连接到MSSQL所需的扩展。在 PHP 7.0 之前,FreeTDS 是我的选择,但现在对于那些仍然需要连接到 MSSQL 的人来说,真的没有明显的升级路径。

愚蠢的问题,但考虑到MSSQL在企业环境中肯定得到了很好的使用,我们应该如何连接到从PHP 7.0开始的那些数据库?

我是否忽略了一些显而易见的事情,或者PHP 7的发布基本上给任何需要连接到MSSQL的人打了一巴掌?

为了清楚起见,我不是在谈论从运行PHP的Windows服务器进行连接,我需要从Linux服务器连接到MSSQL,因此需要一个Linux ODBC驱动程序。

有没有人做过这样一个可以与MSSQL 2012和PHP 7.0一起使用的东西,可以免费或付费使用?

对我来说很奇怪的是,没有太多的PHP 7和MSSQL信息。当然,PHP 7 是刚刚出版的,但必须有更多的 MSSQL 商店(FWIW 我们两者都使用)。


答案 1

Microsoft 在 PECL 上有 PHP Linux 驱动程序,适用于 PHP 7 及更高版本的 SQL Server。这些都是生产就绪的。若要下载它们,请按照下列步骤操作:

Ubuntu 16.04:

sudo su 
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
exit
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql mssql-tools unixodbc-dev
sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
echo "extension=sqlsrv" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
echo "extension=pdo_sqlsrv" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`

CentOS 7:

sudo su
curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo
exit
sudo yum update
sudo ACCEPT_EULA=Y yum install -y msodbcsql mssql-tools unixODBC-devel 
sudo yum groupinstall "Development Tools"
sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
echo "extension=sqlsrv" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
echo "extension=pdo_sqlsrv" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`

这将安装 PHP SQL Server 驱动程序,并在 php.ini 文件夹中注册它们。

使用以下示例验证它是否正常工作

<?php
$serverName = "localhost";
$connectionOptions = array(
    "Database" => "SampleDB",
    "Uid" => "sa",
    "PWD" => "your_password"
);
//Establishes the connection
$conn = sqlsrv_connect($serverName, $connectionOptions);
if($conn)
    echo "Connected!"
?>

参考链接:


答案 2

PHP7 的 sybase 包含 pdo_dblib 模块。

sudo apt install php7.0-sybase

推荐