从PHP连接到SQL Server

时间:2020-07-21 19:50:34

标签: php sql sql-server

除了无法通过PHP构建的Web应用程序进行连接之外,我目前可以正常运行SQL Server。

每当我尝试连接到服务器时,都会出现以下错误:

Array([0] => Array([0] => 08001 [SQLSTATE] => 08001 [1] => 258 [代码] => 258 [2] => [Microsoft] [用于SQL Server的ODBC驱动程序13] TCP 提供者:蒂格波·埃斯佩拉·埃斯佩拉·阿戈多多剧院。 [消息] => [Microsoft] [用于SQL Server的ODBC驱动程序13] TCP提供程序: 蒂珀科·德·埃斯佩拉·埃斯佩拉·阿戈多多剧院。 )[1] =>数组( [0] => HYT00 [SQLSTATE] => HYT00 [1] => 0 [代码] => 0 [2] => [Microsoft] [用于SQL Server的ODBC驱动程序13]登录超时已过期 [消息] => [Microsoft] [用于SQL Server的ODBC驱动程序13]登录超时 过期)[2] =>数组([0] => 08001 [SQLSTATE] => 08001 [1] => 258 [代码] => 258 [2] => [Microsoft] [用于SQL Server的ODBC驱动程序13] A 与网络相关或特定于实例的错误发生在 建立与SQL Server的连接。找不到服务器 无障碍。检查实例名称是否正确以及SQL Server是否正确 配置为允许远程连接。有关更多信息,请参见SQL。 服务器联机丛书。 [消息] => [Microsoft] [用于SQL的ODBC驱动程序13 服务器]期间发生了与网络相关或特定于实例的错误 建立与SQL Server的连接。找不到服务器 无障碍。检查实例名称是否正确以及SQL Server是否正确 配置为允许远程连接。有关更多信息,请参见SQL。 服务器联机丛书。 )

我几乎尝试了在StackOverflow和其他网站上发现的每个修补程序,但没有一个起作用。

我确认的事情:

  • 端口1433正确打开。
  • 服务器正常运行,因为我可以从网络外部的另一台计算机上打开SQL Server Manager,并且可以使用公共IP和密码登录到服务器SQL。
  • 没有防火墙问题。添加了每个例外,并且临时禁用了防火墙以进行确认。
  • 允许远程连接,并且SQL Server配置似乎可以。

我使用的PHP代码不是很复杂:

$serverName = "111.111.111.111"; 
$connectionInfo = array( 
    "Database"=>"DBName", 
    "UID"=>"sa", 
    "PWD"=>"DBPWD", 
    "CharacterSet"=>"utf-8"
);
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if ( $conn ) {
     echo "Good";
} else {
     echo "Bad.<br />";
     die( print_r( sqlsrv_errors(), true));
}

我尝试了很多不同的事情,例如:

$serverName = "111.111.111.111\INSTANCE";
$serverName = "111.111.111.111/INSTANCE";
$serverName = "111.111.111.111, 1433";  

但是它们都没有起作用。

再次,我不认为这是网络问题,因为我可以使用SQL Management Studio从外部连接到数据库,但是我不能从PHP应用程序中完成此操作。

当脚本在网络内部运行并且公共IP被主机名替换时,代码才起作用。这应该表明代码也可以。

我可能会缺少什么?

0 个答案:

没有答案