PHP - 连接到MSSQL数据库 - FreeTDS,PHP 5.3.27,Linux Redhat 64位

时间:2013-10-08 15:56:44

标签: php sql-server linux redhat

我很难用PHP从我的Redhad linux盒子连接到MSSQL数据库。我用Google搜索了这件事,我尝试的一切似乎都没有用。

我安装了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 "!";
?>

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

1 个答案:

答案 0 :(得分: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时,主机都会产生误导,它是freeTDS所期望的括号名称(例如上例中的例如Server70)。

但是尝试从更高级别的抽象(PHP:mssql_connect()函数)进行测试是不够的。您应该尝试freetds提供的命令行工具,特别是tsql或osql。这就是他们的目的。如果没有这样的测试,那么真的很难知道失败的原因。

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