【发布时间】:2017-05-14 03:51:25
【问题描述】:
我正在尝试将 php 应用程序(使用框架 Kohana)与 Microsoft SQL Server 连接,但它失败了!!!
技术背景:
- Microsoft Windows Server 2012 R2 标准版。
- 框架 Kohana v2.3.4。
- XAMPP 服务器 v1.7.1:
- Apache v2.2.11。
- PHP 5.2.9。
- Microsoft SQL Server 2012(快捷版)。
- Microsoft .NET Framework v4.0.20219.42000。
问题总结:
- 显然,mssql驱动没问题!我检查了文件夹 "...\xampp\php\ext\" 是否有 "php_mssql.dll" 以及 php.ini 文件中是否有它的引用...是的!!!一切正常!
- 我在 Microsoft SQL Server Management Studio 中没有任何身份验证问题(我正在使用 SQL Server 身份验证)。1
- 我在 Kohana 数据库配置中遇到问题(我使用的是 Management Studio 的相同身份验证数据)。我在其中添加了以下内容:
$config['testing'] = 数组
(
'基准' => 真,
'持久' => 真的,
'连接' => 数组
(
'类型' => 'mssql',
'用户' => '用户名',
'pass' => '密码',
'主机' => '服务器名\SQLEXPRESS',
'端口' => 错误,
'socket' => 错误,
'数据库' => '数据库名称'
),
'character_set' => 'utf8',
'table_prefix' => '',
'对象' => 真,
'缓存' => 假,
'逃脱' => 真的
);
但是,Web 浏览器的答案是“mssql_connect() [function.mssql-connect]: Unable to connect to server: SERVERNAME\SQLEXPRESS”。
我尝试更改主机名(我认为问题出在此处):不使用“\SQLEXPRESS”并使用机器 IP 地址。
我尝试将用户设置为 FALSE 并在 kohana 数据库配置中传递属性。
重要的是要说:这台机器是一个测试服务器!我可以将应用程序与开发机器中的 sql 服务器连接起来。所以,我尝试将开发机器应用程序与测试机器数据库服务器连接起来,我得到了同样的错误。测试和开发机器之间的独特技术差异在于我使用 SQL SERVER 2016 和 Windows 10 的开发机器。在开发机器中,我在 Management Studio 中使用“Windows 身份验证”进行身份验证,并将用户设置为 FALSE 并通过在 kohana 数据库配置中。
可能是什么问题?谢谢!
【问题讨论】:
-
所以,如果您使用
SERVERNAME\SQLEXPRESS和您的 Windows 凭据从 Management Studio 连接,您可以登录到服务器,对吧? -
@Hackerman:是的!我在 Management Studio 中没有任何身份验证问题。问题出在 PHP Kohana 中。
-
我唯一能想到的是您使用的是 SQL Server Express 2016 并且您当前的 php 驱动程序不支持它....也许如果您更新它们microsoft.com/en-us/download/details.aspx?id=20098跨度>
-
@Hackerman 我在测试机器中使用 SQL Server Express 2012(我有问题)和在开发机器中使用 SQL Server 2016(没有 Express)(我没有任何类型的问题)。但是,是的,我会照你说的去做。
-
@Hackerman 这是一个非常古老的应用程序。使用的kohana版本是v2.3.4(最新的是v3.3),这个版本不兼容新的ms sql server驱动。仅使用(当前)不支持新 php 版本的驱动程序版本,因此我使用的是 PHP 5.2.9。我记得前段时间,我尝试使用新的 php 版本,但驱动程序出现问题,因为它非常新。