0

我很难使用 PHP 从我的 Redhad linux 机器连接到 MSSQL 数据库。我已经用谷歌搜索了这个东西,我尝试的一切似乎都不起作用。

我已经安装了 FreeTDS 并编译了 PHP 安装包以创建 mssql.so 扩展。我已将扩展名放在正确的扩展目录中,并将扩展名添加到我的 php.ini 文件中。

我还关闭了所有防火墙以将其排除在外。

我尝试的最新 PHP 是:

<?php

echo "y";
$server = 'SERVERNAME';
echo "e";
// Connect to MSSQL
$link = mssql_connect($server, '<USERNAME>', '<PASSWORD>');
echo "s";
if (!$link) {
    die('Something went wrong while connecting to MSSQL');
}
echo "!";
?>

当我执行这段代码时,我什么也得不到。所以添加了这些回声,我得到的只是 ye,这告诉我它根本没有连接。任何帮助将不胜感激。我已经尝试在服务器上搜索日志文件,但我真的不知道要查找什么。

4

1 回答 1

1

FreeTDS 默认使用外部配置来指定服务。查看:

/etc/freetds.conf

或 /usr/local/etc/freetds.conf 取决于它的安装方式。

“服务器”可能会误导您。我不确定 PHP:mssql_connect() 是否能够获取其他参数,但 freeTDS 后端需要更多信息,特别是:

  • TDS 版本
  • 港口

这些是在 freetds.conf 中设置的,其语法类似于 INI 文件。在示例配置文件的示例中:

# A typical Microsoft server
[egServer70]
    host = ntmachine.domain.com
    port = 1433
    tds version = 7.0

在我在任何环境中使用freeTDS 时,host 具有误导性,它是freeTDS 期望的括号名称(即上面示例中的egServer70)。

但是尝试从更高级别的抽象(PHP:mssql_connect() 函数)进行测试是不够的。您真的应该尝试使用 freetds 提供的命令行工具,尤其是 tsql 或 osql。这就是他们的目的。如果没有这样的测试,真的很难知道故障在哪里。

如果连接 API 支持,您可以指定 freeTDS 需要的所有参数。

于 2013-12-04T19:07:09.037 回答