php - 使用 mssql 方法(Mac OS X 上的 FreeTDS、PHP 和 Apache)

标签 php macos apache freetds

我已经在我的 Mac 上安装了 FreeTDS,但是我在使用 mssql_connect 进行连接时遇到了一些问题。

首先,当我运行 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 文件中指定的数据源相匹配然后我得到一个错误并且 unable to connect to server: DSN_NAME 这告诉我 PHP 不是正确看到我的 freetds.conf 文件的路径。

但是,如果我在调用之前添加:

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

然后一切都按预期工作。这告诉我我的 freetds.conf 文件格式正确。

我到处搜索如何找到 PHP 认为 freetds.conf 文件所在的路径,但我找不到。

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

有什么想法吗?

谢谢。

最佳答案

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

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

如果你follow the instructions at this blog确切地说,您不应该有任何问题。

最后几件事:

  • 我没有运行 MAMP,尽管说明中提到了它,所以这两种方式都没有关系。
  • 如果您已经通过 MacPorts 安装了 FreeTDS,请使用以下方法卸载:sudo port uninstall freetds +odbc,然后使用 sudo port uninstall unixODBC。确保卸载 FreeTDS 的所有实例。如果您有多个版本,您会在运行卸载时收到一条通知,提示您需要指定要卸载的版本。

关于php - 使用 mssql 方法(Mac OS X 上的 FreeTDS、PHP 和 Apache),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11846438/

相关文章:

macos - ncurses 中的线条绘制

node.js - process.env 变量即使在导出后也未定义

php - 在 Symfony 3 中将参数从 Controller 传递到表单类型 __construct

php - 根据 WSDL 文件格式自定义 PHP SOAP 主体参数

php - 如何在 post 方法登录中正确使用 MySQLi 函数,这就是我的做法。但有一个错误

python - .htaccess 与 python 脚本

php - 无法打开流 : HTTP request failed! HTTP/1.0 400 错误请求

php - 一次查询获取3张表的数据

ios - 椰子足 : ios app and osx test dependencies

apache - 动态.htaccess规则