/usr/local/src/php-5.3.1)/sxmobi/Software/# 下載原始碼
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
# 進入 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
mssql.so 複製到 PHP 擴展目錄php.ini 加入 extension=mssql.so編輯 /etc/freetds/freetds.conf:
[server2008]
host = 192.168.0.109
port = 1433
tds version = 7.0
client charset = utf8
# 使用 tsql 工具測試
./tsql -S 192.168.0.109 -U 用戶名 -P 密碼 -D 資料庫名稱
# 成功會顯示 1> 提示符
1> select * from table;
2> go
<?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);
?>
php -m | grep mssql)Linux 連接 SQL Server 的核心鏈路:PHP mssql 擴展 → FreeTDS 函式庫 → TDS 協定 → SQL Server。關鍵在於 FreeTDS 正確編譯與字元集設定,以及 TDS 版本與目標 SQL Server 版本匹配。