从 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_sqlsrv 和 sqlsrv 发布了 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);
我的设置在 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_sqlsrv 和 sqlsrv 发布了 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);