9

在 Linux 机器上通过 PHP 连接到远程 Microsoft SQL Server 的最佳方式是什么。

PHP 只能在 Linux 机器上运行。

一段时间以来,我一直在寻找最简单的答案。

4

6 回答 6

16

php 5.6

Ubuntu

sudo apt-get install php5.6-sybase freetds-common libsybdb5

AWS / Centos / 红帽

sudo yum install php56-mssql

之后,您可以通过 PHP 连接到 MsSql 数据库,如下所示:

<?php
$server = 'localhost';
$user = 'someUser';
$pass = 'somePassword';
$database = 'theDatabaseName';

try {
    $pdo = new \PDO(
        sprintf(
         "dblib:host=%s;dbname=%s",
         $server,
         $database
        ),
         $user,
         $pass
    );
     $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
     echo "There was a problem connecting. " . $e->getMessage();
}

$query = "SELECT * FROM TestSchema.Employees";
$statement = $pdo->prepare($query);
$statement->execute();
$results = $statement->fetchAll(PDO::FETCH_ASSOC);

var_dump($results);

您可以在命令行上使用以下内容对 MsSQL 进行故障排除:

tsql -H your.server.name -p 1433 -U yourusername -P yourpassword -D yourdatabasename

要安装 tsql,您可以运行以下命令:

安装 SQL 二进制文件以在任何 PHP 版本上进行测试

sudo apt install freetds-bin

php 7+

Microsoft 有我们可以使用的本机驱动程序。完整的说明在这里(Redhat / Ubuntu / Others)

该链接还包含在您的开发机器上安装 Ms SQL 服务器所需的步骤(在 Ubuntu 上工作,在 AWS 上不起作用,但您可以在那里启动一个 RDS 实例)。它还包含有关如何在数据库中创建测试表和数据的基本说明,以及 PHP 连接代码。

您还可以像这样为较新版本的 PHP 安装组件:

sudo apt-get install php7.2-sybase freetds-common libsybdb5
于 2016-12-14T03:16:54.897 回答
5

您必须在 linux 上为 php 安装 mssql 驱动程序。
这是最适合您的教程

于 2013-02-19T11:27:58.920 回答
5

尝试:对于 Ubuntu

sudo apt-get install php5-sybase php5-odbc freetds-common

编辑 freetds.conf 然后用这个 PHP 连接 MSSQL 服务器。

于 2016-04-03T14:15:46.507 回答
0

在搜索并尝试了这里和其他帖子中的许多建议并花费了大量时间之后,一位同事建议尝试 ADO。

由于我们已经安装了启用 ADO 的 PHP,因此启动和运行只需不到 10 分钟。

如果您认真考虑从 Linux PHP 连接到 MS-SQL,请考虑 ADO。

于 2017-04-07T04:44:58.813 回答
0

有趣的是,这里的每个答案都针对问题提出了一种解决方案,而不是回答所提出的问题,哪个是“最佳”解决方案。不幸的是,OP忘记告诉我们“最佳”的标准是什么。

到目前为止没有人提到odbc。虽然这需要配置 odbc 驱动程序以连接到数据库并启用 php 扩展,但此方法提供了 php 代码与底层数据库的最佳隔离,使以后更容易移植代码。

microsoft 提供的 php 驱动程序应该具有良好的兼容性,但仅支持 v7 的 php。

您可能更愿意坚持使用 Linux 发行版提供的功能,以确保您拥有可支持的产品和/或自动补丁管理。这里 odbc 的替代品可能是freetds 驱动程序,但您没有告诉我们这是哪个 Linux 发行版。

于 2018-02-16T02:15:15.633 回答
-1

从 microsoft 获取用于 php 的 sqlsrv 扩展http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx

于 2013-02-19T13:00:04.610 回答