Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
连接到MsSQL服务器的基于Linux的PHP安装_Php_Sql Server_Linux - Fatal编程技术网

连接到MsSQL服务器的基于Linux的PHP安装

连接到MsSQL服务器的基于Linux的PHP安装,php,sql-server,linux,Php,Sql Server,Linux,在Linux机器上通过PHP连接到远程Microsoft SQL Server的最佳方式是什么 PHP将只在Linux机器上运行 一段时间以来,我一直在寻找最简单的答案。您必须在linux上安装mssql php驱动程序。 这对你来说是最好的。从microsoft获取sqlsrv扩展,用于php试试:用于Ubuntu sudo apt-get install php5-sybase php5-odbc freetds-common 编辑freetds.conf,然后将MSSQL服务器与此PHP

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

PHP将只在Linux机器上运行


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

您必须在linux上安装mssql php驱动程序。

这对你来说是最好的。

从microsoft获取sqlsrv扩展,用于php

试试:用于Ubuntu

sudo apt-get install php5-sybase php5-odbc freetds-common
编辑freetds.conf,然后将MSSQL服务器与此PHP连接。

PHP5.6 Ubuntu

sudo apt-get install php5.6-sybase freetds-common libsybdb5
AWS/Centos/Redhat

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);
sudo apt-get install php7.2-sybase freetds-common libsybdb5
要安装tsql,可以运行以下操作:

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

sudo apt install freetds-bin

PHP7+ Microsoft有我们可以使用的本机驱动程序。完整的说明如下所示

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

您还可以为更新版本的PHP安装以下组件:

<?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);
sudo apt-get install php7.2-sybase freetds-common libsybdb5

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

由于我们已经安装了一个支持ADO的PHP,所以启动和运行只需不到10分钟


<>如果您认真考虑从Linux PHP连接到MS-SQL,请考虑ADO. 有趣的是,这里的每个答案都提出了问题的一个解决方案,而不是回答问题,哪一个是“最佳”解决方案。不幸的是,OP忘记告诉我们“最佳”的标准是什么

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

应该提供良好的兼容性,但只支持php的v7版本


您可能更愿意坚持使用Linux发行版提供的功能,以确保您拥有可支持的产品和/或自动化补丁管理。odbc的另一种选择可能是,但您没有告诉我们这是哪个Linux发行版。

没有。您也可以下载并编译源代码。不确定您是否能够将其编译为在linux平台上工作,因为它需要SQL Server本机客户端(仅限Windows)Microsoft为PHP发布了linux驱动程序。在这里查看:。在这里获取说明:查看本教程:这是迄今为止最好的答案,谢谢上面的内容在docker和PHP5.6中对我不起作用,但这确实起到了作用->建议应该作为评论发布。唯一的答案应该是邮递。如果我不理解这里的协议,我很抱歉,但我很确定我给出了很好的答案。问题是:“通过Linux设备上的PHP连接到远程Microsoft SQL Server的最佳方式是什么?”我的回答是:通过Linux设备上的PHP连接到远程Microsoft SQL Server的最佳方式是使用PHP ADO库。有很多例子。这是我发现的第一个: