我很难用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 "!";
?>
当我执行此代码时,我什么也得不到。所以添加那些回声,我得到的就是你,这告诉我它根本没有联系。任何帮助将不胜感激。我已经尝试在服务器上搜索日志文件,但我真的不知道该找什么。
答案 0 :(得分:1)
FreeTDS默认使用外部配置来指定服务。检查:
/etc/freetds.conf
或/usr/local/etc/freetds.conf取决于它的安装方式。
“服务器”可能会误导您。我不确定PHP:mssql_connect()能够获取其他参数,但freeTDS后端需要更多信息,特别是:
这些是在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需要的所有参数。