php mssql_connect 不工作

Posted

技术标签:

【中文标题】php mssql_connect 不工作【英文标题】:php mssql_connect not working 【发布时间】:2011-05-28 06:15:30 【问题描述】:

这是我正在使用的代码。

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

$myServer = "ip-address:1334/SQLEXPRESS";
$myUser = "username";
$myPass = "password";
$myDB = "dbname";

$link = mssql_connect($myServer, $myUser, $myPass);
if ( !$link ) 
  if ( function_exists('error_get_last') ) 
     var_dump(error_get_last());
           
  die('connection failed');
   
  ?>

现在这段代码在linux机器上运行,服务器在windows服务器上。 IP 以及用户名、密码都是正确的,我在 SQLEXPRESS 中创建了一个新对。但是,我仍然遇到连接问题。

 Warning: mssql_connect() [function.mssql-connect]: Unable to connect to server

我们的 windows 服务器打开了 1334 端口,而 SQL 服务器正在监听 1334 和 1433。出于安全原因,他们不会打开默认端口。他们已经仔细检查了设置,但我仍然无法连接。

我接下来应该采取什么行动。

亲切的问候

胡拉姆

【问题讨论】:

你的 $myServer 中的 ip-address 是什么? @G molvi 它是我们 Windows 服务器的有效 IP 地址 【参考方案1】:

可能是 Windows SQL 服务器有防火墙限制,限制从服务器外部访问。

【讨论】:

他们说他们允许外部访问端口 1334,但我也无法通过 telnet 连接。【参考方案2】:

对于连接 Linux + Apache + SQLEXPRESS 2005 请注意:

不要使用标准 MS-SQL 端口 (1433),使用 SQL Server 配置管理器 -> SQL Express 协议 -> TCP/IP 属性 -> IP 地址 -> IPAll 下的 MS-SQL 动态端口

您可以使用以下语句进行直接连接(不使用 FreeTDS):

$db=mssql_connect('192.168.xxx.xxx:1541','usrxxxx','pwdxxxx');

-您可以使用 FreeTDS 配置 freetds.conf 文件如下:

  [connect2k5]
  host = 192.168.xxx.xxx
  port = 1541
  tds version = 8.0

使用以下 PHP 语句:

  $db=mssql_connect('connect2k5','usrxxxx','pwdxxxx');

我从http://php.net/manual/en/function.mssql-connect.php得到它

你也可以试试http://www.akamarketing.com/blog/99-php-sql-server-connection-problems-mssql_connect-functionmssql-connect-unable-to-connect-to-server.html

【讨论】:

嗨 Sazzad,我检查了动态端口并尝试连接到它,但我无法通过 php 或 telnet 进行连接。会不会是防火墙。服务器安装了 mcafee,我没有看到任何端口阻止规则。 尝试禁用所有防火墙规则以及防病毒软件。你的服务器版本是多少?并且服务器是在局域网还是在公网IP?【参考方案3】:

端口可能未打开。您应该可以通过 telnet 连接到端口 1334 或 1433。您不会收到任何文本,但它会连接。

【讨论】:

以上是关于php mssql_connect 不工作的主要内容,如果未能解决你的问题,请参考以下文章

mssql可以远程连接吗?

PHP SQL Server连接工作或不工作[重复]

PHP连接mssql问题

使用 Windows 身份验证时要填写 mssql_connect 的哪些登录数据?

如何将 PHP 连接到 SQL Server?

带有 SQL Server 和准备好的语句的 PHP PDO