从 Ubuntu 12.04 LTS 上的 CakePHP 3 连接到 SQL 服务器

Connect to SQL Server from CakePHP 3 on Ubuntu 12.04 LTS

我的设置在 Windows 上运行,但我最近切换到 Ubuntu 12.04 LTS,但现在无法连接。当我加载需要与 SQL 服务器通信的页面时,出现此错误:

Database driver Cake\Database\Driver\Sqlserver cannot be used due to a missing PHP extension or unmet dependency

很明显,CakePHP 找不到 SQL 服务器 PDO 驱动程序。

我找到了许多旧教程来帮助我,但我使用了最新的(我绝对希望能够在我的 CakePHP 网站上使用 PDO)。 This is the tutorial I followed.

使用终端,我可以用这个命令访问数据库

sqlcmd -S my.sql.server.com -U username

我需要做什么才能从我的 ubuntu 安装的 CakePHP 3.x 连接到此 sql 服务器数据库?

更新(2016 年 10 月 17 日):

Microsoft 最近为 pdo_sqlsrvsqlsrv 发布了 preview version(在他们的 msphpsql 存储库中)Linux。它在 Ubuntu 16.04.1 LTS (Xenial Xerus) 虚拟机 运行 php7.

上为我成功运行

原回答:

正如@AD7six 所说:

CakePHP's sql server driver is for using PDO_SQLSRV; If you need to use ODBC, there isn't one in the core.

PDO_SQLSRV 如果您使用 Windows,则可以正常工作。 CakePHP 有一个原生支持它的驱动程序。

如果您想从 Linux 与 SQL 服务器数据库通信,您必须使用 ODBC 驱动程序。您可以使用 this tutorial 安装驱动程序,这对我帮助很大。之后,您将能够使用 PDO(不是 CakePHP)连接到您的数据库:

try {
  $query = new PDO(
    "odbc:Driver={SQL Server};Database=[Database name]; Server=[Hosame]",
    "[Username]", 
    "[Password]");
} catch (PDOException $e) {
  echo 'Connection failed: ' . $e->getMessage();
}

感谢大家的帮助。 find/code 用于 odbc 的 CakePHP 3 数据库驱动程序可能很棒。

新版本的 CakePHP 支持 PDO-sqlsrv,这是支持 PHP 7 及更高版本的新 MS 驱动程序。

http://php.net/manual/en/ref.pdo-sqlsrv.php

它还允许您连接到 Azure。示例:

//建立连接 $conn = new PDO( "sqlsrv:server=$serverName ; Database = $database", $uid, $pwd);