首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> SQL Server 2008

Linux 編譯 FreeTDS 與 MSSQL 擴展實現 PHP 連接 SQL Server 2008 完整教學

     編輯:SQL Server 2008

環境準備

  • 作業系統:Linux (Ubuntu/CentOS 均適用)
  • 目標資料庫:SQL Server 2008
  • PHP 版本:5.3.x(範例路徑 /usr/local/src/php-5.3.1)
  • 安裝前綴:/sxmobi/Software/

步驟 1:安裝配置 FreeTDS

# 下載原始碼
wget https://mirrors.xmu.edu.cn/ubuntu/archive/pool/main/f/freetds/freetds_0.82.orig.tar.gz
tar zxf freetds_0.82.orig.tar.gz
cd freetds_0.82

# 編譯安裝,啟用 mssql 支援
./configure --prefix=/sxmobi/Software/common/freetds --enable-msdblib
make && make install

步驟 2:編譯 PHP MSSQL 擴展模組

# 進入 PHP 原始碼的 mssql 擴展目錄
cd /sxmobi/web/softbak/php-5.3.13/ext/mssql

# 產生 configure 腳本
/sxmobi/Software/webserver/php/bin/phpize

# 配置編譯選項
./configure --with-php-config=/sxmobi/Software/webserver/php/bin/php-config \
            --with-mssql=/sxmobi/Software/common/freetds

# 編譯安裝
make && make install

常見編譯錯誤與解決

錯誤:configure: error: Directory /usr/local/freetds is not a FreeTDS installation directory
原因:新版 FreeTDS 不再安裝 PHP 偵測所需的特定檔案
解決:手動建立兩個空檔案
touch /usr/local/freetds/include/tds.h
touch /usr/local/freetds/lib/libtds.a

部署模組

  1. 將產生的 mssql.so 複製到 PHP 擴展目錄
  2. 修改 php.ini 加入 extension=mssql.so
  3. 重啟 PHP-FPM / Apache

步驟 3:配置 FreeTDS 連線設定

編輯 /etc/freetds/freetds.conf:

[server2008]
    host = 192.168.0.109
    port = 1433
    tds version = 7.0
    client charset = utf8

關鍵參數說明

  • tds version:SQL Server 2008 使用 7.0 或 7.1;2012+ 建議 7.3/7.4
  • client charset:指定 utf8 避免中文亂碼

步驟 4:測試連線

# 使用 tsql 工具測試
./tsql -S 192.168.0.109 -U 用戶名 -P 密碼 -D 資料庫名稱

# 成功會顯示 1> 提示符
1> select * from table;
2> go

PHP 程式碼測試範例

<?php
$conn = mssql_connect('server2008', '用戶名', '密碼');
if (!$conn) {
    die('連線失敗: ' . mssql_get_last_message());
}
mssql_select_db('資料庫名稱', $conn);

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

故障排除清單

  1. 確認防火牆開放 1433 埠
  2. SQL Server 啟用 TCP/IP 協定
  3. SQL Server 允許遠端連線
  4. FreeTDS 版本相容性(0.91+ 支援較新 SQL Server 版本)
  5. PHP mssql 擴展已正確載入(php -m | grep mssql)

總結

Linux 連接 SQL Server 的核心鏈路:PHP mssql 擴展 → FreeTDS 函式庫 → TDS 協定 → SQL Server。關鍵在於 FreeTDS 正確編譯與字元集設定,以及 TDS 版本與目標 SQL Server 版本匹配。

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