【问题标题】:Cannot connect to remote MSSQL from OSX Apache/PHP无法从 OSX Apache/PHP 连接到远程 MSSQL
【发布时间】:2015-01-15 21:48:32
【问题描述】:

我正在为一个客户端构建一个站点,该站点涉及与在 SQL Server 2012 上运行的一些内部数据库进行交互。我正在尝试启动并运行开发环境,并尝试连接到在其上运行的 SQLEXPRESS 的 MSSQL 2012 实例一个 Windows 7 虚拟机用尽了 virtualbox。 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 单步执行了所有代码,它在任何地方都没有失败,所发生的只是它调用了返回 false 的 mssql_connect。

我使用的 PHP 安装来自:

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

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

  • 已启用 MSSQL 支持
  • 活动持久链接 0
  • 活动链接 0
  • 库版本 FreeTDS
  • mssql.allow_persistent 开启 开启
  • 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 服务器
  • 默认服务器默认 mssql.timeout 60 60

sql.safe_mode 也设置为 Off。

我已经使用“tsql -H -p -U”进行了测试,它和使用“tsql -S CON1”一样有效,CON1 来自我的 freetds.conf:

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

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

我还尝试使用 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');

我敢肯定还有其他一些我也错过了,但它们都没有工作。

老实说,我完全不知道接下来要尝试什么。我希望这里有人可以提供更多信息。

非常感谢您提前提供的帮助

【问题讨论】:

    标签: php sql-server macos apache


    【解决方案1】:

    我一发布就发现问题出在哪里,我的 PHP 安装找不到 FREETDS 配置文件,要解决这个问题,我已设置:

    putenv('FREETDSCONF=/usr/local/etc/freetds.conf');

    我需要为此找到一个更永久的解决方法(可能只是重建 PHP),但它现在仍然有效。

    非常感谢

    【讨论】:

    • 这也是我的问题的一部分。如何或什么决定 PHP 看到哪些环境变量(OS X、系统 apache、自制 php)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-30
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    相关资源
    最近更新 更多