无法从OSX Apache / PHP连接到远程MSSQL

时间:2014-11-18 16:14:26

标签: php sql-server macos apache

我正在为客户构建一个站点,该站点涉及与在SQL Server 2012上运行的一些内部数据库进行交互。我试图通过dev环境启动并运行并尝试连接到运行的SQLEXPRESS的MSSQL 2012实例Windows 7 VM耗尽虚拟机。 VM有自己的IP地址,我可以使用带有JDBC驱动程序的SQuirreL SQL从我的Mac连接到它,所以我知道服务器已正确配置为允许远程连接。

然而,我在Mac上尝试通过PHP连接的所有操作都失败了,它开始让我绕过弯道!!

我正在使用ADODB尝试连接并尝试连接mssql和odbc_mssql驱动程序,但每次都失败并显示未公开的错误(我已尝试启用调试)。这是我的代码:

$_dba = @NewADOConnection('myssql');
$_dba->debug = true;
$_dba->Connect('192.168.1.10', 'sa', 'password', 'database');

我已经使用XDebug逐步完成所有代码并且它在任何地方都没有失败,所有发生的事情都是调用mssql_connect返回false。

我使用PHP安装:

http://php-osx.liip.ch/

这包括mssql模块,我的php.ini的输出是:

  • 启用了MSSQL支持
  • Active Persistent Links 0
  • Active Links 0
  • 图书馆版FreeTDS
  • mssql.allow_persistent On On
  • mssql.batchsize 0 0 mssql.charset UTF-8 UTF-8
  • mssql.compatability_mode Off Off mssql.connect_timeout 5 5
  • mssql.datetimeconvert On On mssql.max_links Unlimited Unlimited
  • mssql.max_persistent Unlimited Unlimited
  • mssql.max_procs Unlimited Unlimited mssql.min_error_severity 10 10
  • mssql.min_message_severity 10 10 mssql.secure_connection Off Off
  • mssql.textlimit服务器默认服务器默认为mssql.textsize Server
  • 默认服务器默认为mssql.timeout 60 60

sql.safe_mode也设置为Off。

我已经测试过使用' tsql -H -p -U'它的工作原理与使用&#ts; tsql -S CON1'哪个也有效,来自我的freetds.conf的CON1:

[CON1]
    host = 192.168.1.10
    port = 1433
    tds version = 8.0

我不确定它是否有所作为但是在PHP之后安装了FreeTDS,我必须安装它才能显示配置文件。

我还尝试过使用msyql_connect()测试我可以想到的连接细节的每种可能组合:

mssql_connect('192.168.1.10:1433', 'sa', 'password');
mssql_connect('\\\\192.168.1.10:1433', 'sa', 'password');
mssql_connect('\\\\192.168.1.10\\SQLEXPRESS:1433', 'sa', 'password');
mssql_connect('192.168.1.10', 'sa', 'password');
mssql_connect('\\\\192.168.1.10', 'sa', 'password');
mssql_connect('\\\\192.168.1.10\\SQLEXPRESS', 'sa', 'password');

而且我确信其他一些我也错过了其他人,但他们都没有工作。

我完全不知道接下来应该尝试什么。我希望有人能够提供更多信息。

非常感谢您的帮助

1 个答案:

答案 0 :(得分:1)

当我发布这个问题时,我发现问题来自哪里,我的PHP安装找不到FREETDS配置文件,解决了我设置的问题:

运行putenv( 'FREETDSCONF =的/ usr /本地/ etc / freetds.conf');

我需要找到一个更持久的工作(可能只是重建PHP),但它现在仍然有用。

非常感谢