首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

Linux 下 PHP 連接 SQL Server 2005:FreeTDS 編譯與配置完整指南

     編輯:PHP 相關知識

背景

PHP 5.3+ Windows 移除 mssql 擴充,官方建議用 sqlsrv;Linux 下則使用 FreeTDS + mssql 或 pdo_dblib 連接 SQL Server。

步驟 1:編譯安裝 FreeTDS

wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-1.3.12.tar.gz
tar zxvf freetds-1.3.12.tar.gz
cd freetds-1.3.12
./configure --prefix=/usr/local/freetds --with-tdsver=7.2
make && make install

關鍵點:--with-tdsver=7.2 對應 SQL Server 2005(TDS 7.2)。網上常見 8.0 是 SQL Server 2000,會導致連線失敗。

步驟 2:重新編譯 PHP 加入 mssql 支援

cd /path/to/php-source
./configure --prefix=/usr/local/php --with-mssql=/usr/local/freetds ...(其他原有參數)
make && make install

步驟 3:配置 FreeTDS 連線資訊

編輯 /usr/local/freetds/etc/freetds.conf:

[egServer72]
    host = 192.168.1.100     # SQL Server IP 或主機名
    port = 1433
    tds version = 7.2
    client charset = UTF-8   # 解決中文亂碼

步驟 4:PHP 連線測試

<?php
$conn = mssql_connect('egServer72', 'sa', 'password');  // 注意:用 freetds.conf 的名稱,非 IP
if (!$conn) die('連線失敗: ' . mssql_get_last_message());

mssql_select_db('MyDatabase', $conn);
$result = mssql_query('SELECT TOP 10 * FROM Users', $conn);
while ($row = mssql_fetch_assoc($result)) {
    print_r($row);
}
mssql_close($conn);
?>

常見問題與解決

問題原因解決
連線逾時防火牆阻擋 1433、SQL Server 未啟用 TCP/IP開放端口、SQL Server Configuration Manager 啟用 TCP/IP
中文亂碼字元集不匹配freetds.conf 加 client charset = UTF-8、資料庫欄位用 NVARCHAR
mssql_connect 未定義PHP 未編譯 --with-mssql 或未載入擴充檢查 phpinfo()、php.ini 載入 mssql.so
TDS 版本錯誤FreeTDS 編譯版本與 SQL Server 不符重編 FreeTDS 指定正確 --with-tdsver

現代替代方案

  • Microsoft ODBC Driver + pdo_sqlsrv:官方支援 Linux/macOS/Windows,效能最佳、功能完整(支援 AlwaysEncrypted、AlwaysOn 等)。
  • PDO_DBLIB (FreeTDS):PDO 介面統一,但功能受限於 FreeTDS。
  • 建議:新專案直接用 pdo_sqlsrv,舊專案維護才用 mssql/dblib。

結語

FreeTDS 是 Linux 連接舊版 SQL Server 的經典方案。關鍵在於:TDS 版本對應正確、freetds.conf 使用邏輯名稱連線、字元集統一 UTF-8。掌握這三點,即可穩定打通 PHP 與 SQL Server 2005/2008/2012 等版本。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved