2012-08-07 107 views
3

我在我的Mac上安装了FreeTDS,但我在使用mssql_connect时出现了一些问题。使用mssql方法(Mac OS X上的FreeTDS,PHP和Apache)

首先,当我运行tsql -C时,我看到freetds.conf目录被列为/opt/local/etc/freetds。我在这个目录下有一个freetds.conf文件。

接下来,如果我连这样的:

$connect = mssql_connect('IP_ADDRESS', 'username', 'password'); 

则一切正常。也就是说,我可以从mssql_select_db()中选择哪个数据库检索,更新或插入数据。

如果我尝试连接这样的:

$connect = mssql_connect('DSN_NAME', 'username', 'password'); 

其中DSN_NAME我freetds.conf文件中指定然后我得到它告诉我,PHP没有正确看到了路径错误,unable to connect to server: DSN_NAME数据源相匹配到我的freetds.conf文件。

但是,如果我的电话之前,我补充一下:

putenv("FREETDSCONF=/opt/local/etc/freetds/freetds.conf"); 

则一切正常。这告诉我,我的freetds.conf文件格式正确。

我已经遍寻搜索如何找到PHP 认为的路径 freetds.conf文件在,但我找不到。

最后,有一些原因我不想直接在我的连接中使用IP地址,以及为什么我不希望被迫使用putenv()方法来指定目录。

任何想法?

谢谢。

+0

我修复了这个问题。我会在下面发表一个答案。 – tptcat 2012-08-08 03:22:25

回答

1

当我安装FreeTDS时,我最初使用MacPorts。我相信这给了我freetds.conf应该在哪里的一些冲突。即使运行时运行的freetds.conf的路径是我尝试使用的实际路径,但是当我使用该路径编译mssql.so扩展时,PHP无法识别它。

解决方法是忘记MacPorts for FreeTDS,并从源码安装FreeTDS。然后从PHP源代码安装mssql.so扩展,并确保使用的是您的系统上的相同版本(我的系统是Mountain Lion下的5.3.13)。

如果你follow the instructions at this blog正是你应该没有任何问题。

一对夫妇的最后的东西:

  • 我不跑MAMP即使说明书提到它,所以它不会不管两种方式。
  • 如果您已经通过MacPorts安装了FreeTDS,请使用:sudo port uninstall freetds +odbc然后sudo port uninstall unixODBC进行卸载。确保你卸载了FreeTDS的所有实例。如果您拥有多个版本,则在运行卸载时会收到通知,您需要指定要卸载的版本。