2012-08-07 53 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的所有實例。如果您擁有多個版本,則在運行卸載時會收到通知,您需要指定要卸載的版本。