You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Namecheap Linux共享主机连接远程SQL Server失败问题

问题描述

我使用Namecheap的Linux共享主机运行PHP 8.1应用,已启用sqlsrv和pdo_sqlsrv扩展,尝试连接cloudclusters.io上的远程SQL Server,代码如下:

$serverName = "38.17.53.119,16301";
$connectionInfo = array("Database"=>"chuna", "UID"=>"username", "PWD"=>"password");

$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn ) {
    echo "Successfuly connected.<br />";
}else{
    echo "Connection error.<br />";
    die( print_r( sqlsrv_errors(), true));
}

但出现以下连接错误:

Array ( [0] => Array ( [0] => HYT00 [SQLSTATE] => HYT00 [1] => 0 [code] => 0 [2] => [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired [message] => [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired ) [1] => Array ( [0] => 08001 [SQLSTATE] => 08001 [1] => 10057 [code] => 10057 [2] => [Microsoft][ODBC Driver 17 for SQL Server]TCP Provider: Error code 0x2749 [message] => [Microsoft][ODBC Driver 17 for SQL Server]TCP Provider: Error code 0x2749 ) [2] => Array ( [0] => 08001 [SQLSTATE] => 08001 [1] => 10057 [code] => 10057 [2] => [Microsoft][ODBC Driver 17 for SQL Server]A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online. [message] => [Microsoft][ODBC Driver 17 for SQL Server]A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online. ) )

本地Windows环境测试该远程连接可成功,但共享主机上失败,求解决方法。

解决步骤

1. 排查共享主机的出站端口限制

Namecheap Linux共享主机默认会限制部分出站端口,目标端口16301可能被封禁:

  • 登录Namecheap主机管理面板,查看防火墙/安全设置中的出站规则,确认16301端口是否允许出站访问
  • 若找不到相关设置,直接提交工单给Namecheap支持,询问是否开放了38.17.53.119:16301的出站权限

2. 验证ODBC驱动版本兼容性

Linux环境下sqlsrv扩展依赖ODBC Driver for SQL Server,需确保主机上的驱动版本与本地一致(本地使用ODBC Driver 17):

  • 通过SSH执行命令odbcinst -q -d,查看已安装的ODBC驱动列表,确认是否存在ODBC Driver 17 for SQL Server

3. 检查SQL Server的IP白名单设置

cloudclusters.io的SQL Server可能仅允许你本地IP访问,需将Namecheap共享主机的公网IP加入白名单:

  • 登录cloudclusters.io控制台,找到目标SQL Server实例,进入防火墙/访问控制设置页面
  • 在主机上执行curl ifconfig.me获取公网IP,将其添加到SQL Server的允许访问列表中

4. 调整连接超时参数

尝试在连接配置中增加超时时间,避免因网络延迟导致连接失败:

$connectionInfo = array(
    "Database"=>"chuna", 
    "UID"=>"username", 
    "PWD"=>"password",
    "LoginTimeout" => 30
);

5. 测试主机到SQL Server的网络连通性

通过SSH在主机上执行以下命令,验证端口连通性:

  • 使用telnet:telnet 38.17.53.119 16301
  • 或使用nc:nc -zv 38.17.53.119 16301
    如果命令执行失败,说明网络层面存在阻断,优先解决端口限制或IP白名单问题

内容的提问来源于stack exchange,提问作者rufusy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 16:48:27