【问题标题】:Why won't my server connect to a remote MSSQL server using PHP mssql_connect?为什么我的服务器不能使用 PHP mssql_connect 连接到远程 MSSQL 服务器?
【发布时间】:2011-06-02 13:19:58
【问题描述】:

我不得不将我们为客户端编写的应用程序移动到新服务器,并且我使用 PHP mssql_connect 启动的远程连接已停止工作。我注意到 PHP 不是用 mssql 编译的,所以我要求服务器管理员安装它。我可以验证它现在是否已通过 PHP 信息安装,但我现在从 mssql_connect 收到一致的“无法连接到服务器”错误。

这是我正在运行的非常简单的 PHP 脚本:

$myServer = "myserver.com:5000";
$myUser = "myusername";
$myPass = "mypassword";

$dbhandle = mssql_connect($myServer, $myUser, $myPass)
or die("Couldn't connect to SQL Server on $myServer. Error: " . mssql_get_last_message());

我已经确认凭据仍然正确,但无论出于何种原因,mssql_connect 似乎都没有做这件事。我想知道管理员在安装扩展程序和 FreeTDS 后是否忘记了一些事情。任何指针都非常感谢! :)

问题解决了!!!

毕竟它是 /usr/local/freetds/etc/freetds.conf 中指定的 FreeTDS 协议版本号,因此必须取消注释第 13 行。就是这样! :)

【问题讨论】:

  • 是立即失败还是超时后失败?确切的错误信息?您可以通过一些 SQL 工具进行连接吗?
  • 可能是防火墙/路由/dns 类型问题。您可以从您的 php 主机连接到该主机/端口(使用例如 telnet)吗?
  • 我已经设置 FreeTDS 来记录错误,它报告“来自服务器的意外 EOF”...不确定这是“我的服务器”还是远程“SQL 服务器”。顺便说一句,远程服务器是 SQL Server 2000。
  • 我发现了问题,请参阅已编辑的问题以获取解决方案,出于某种疯狂的原因,我还无法回答我自己的问题……显然,我的问题很明显。 :)

标签: php sql-server linux apache2 freetds


【解决方案1】:

毕竟它是 /usr/local/freetds/etc/freetds.conf 中指定的 FreeTDS 协议版本号,因此必须取消注释第 13 行。就是这样! :)

【讨论】:

    【解决方案2】:

    远程连接很可能在安装服务器的服务器上被禁用。您是否检查过您是否真的能够从尝试连接到它的网络服务器的 IP 地址远程连接到数据库服务器?通常,至少在大多数共享主机方案中,数据库服务器只接受来自 localhost 的连接。您需要将网络服务器的 IP 地址添加到白名单(通常在服务器的配置中)以允许来自外部的连接。

    【讨论】:

    • 您好,感谢您的建议。我正在连接的远程服务器已经将我的服务器 IP 列入白名单。我想知道在“启用”FreeTDS 或类似方面是否遗漏了一些设置。 :(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-27
    • 1970-01-01
    • 2010-12-28
    相关资源
    最近更新 更多