溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux下如何使用php訪問sql server

發布時間:2022-01-26 11:20:01 來源:億速云 閱讀:206 作者:小新 欄目:開發技術
# Linux下如何使用PHP訪問SQL Server

## 前言

在企業級應用開發中,經常需要跨平臺訪問不同類型的數據庫。雖然PHP與MySQL的組合更為常見,但在某些場景下(如對接企業現有SQL Server數據庫時),我們需要在Linux環境下通過PHP連接SQL Server。本文將詳細介紹在Linux系統中配置PHP與SQL Server通信的完整流程。

---

## 一、環境準備

### 1.1 系統要求
- Linux發行版(Ubuntu/CentOS等)
- PHP 7.0+(推薦7.4或8.0+)
- SQL Server 2008+(建議2016以上版本)

### 1.2 安裝必要組件
```bash
# Ubuntu/Debian
sudo apt-get install -y php php-dev unixodbc-dev

# CentOS/RHEL
sudo yum install -y php php-devel unixODBC-devel

二、安裝ODBC驅動

Microsoft官方提供了Linux版的ODBC驅動,這是連接SQL Server的關鍵組件。

2.1 添加微軟倉庫

# Ubuntu 20.04
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo curl -o /etc/apt/sources.list.d/mssql-release.list \
    https://packages.microsoft.com/config/ubuntu/20.04/prod.list

# CentOS 7
sudo curl -o /etc/yum.repos.d/mssql-release.repo \
    https://packages.microsoft.com/config/rhel/7/prod.repo

2.2 安裝驅動

# Ubuntu
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql17 mssql-tools

# CentOS
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel
sudo ACCEPT_EULA=Y yum install -y msodbcsql17 mssql-tools

2.3 驗證安裝

odbcinst -q -d -n "ODBC Driver 17 for SQL Server"

三、編譯安裝PHP的SQLSRV擴展

3.1 下載擴展包

從PECL獲取最新版:

sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv

或手動下載:

wget https://pecl.php.net/get/sqlsrv-5.10.1.tgz
tar -xzvf sqlsrv-5.10.1.tgz
cd sqlsrv-5.10.1/
phpize
./configure
make
sudo make install

3.2 配置PHP.ini

php.ini中添加:

extension=sqlsrv.so
extension=pdo_sqlsrv.so

驗證加載:

php -m | grep sqlsrv

四、連接測試

4.1 基本連接示例

<?php
$serverName = "your_server_ip,1433";
$connectionOptions = [
    "Database" => "your_database",
    "Uid" => "sa",
    "PWD" => "your_password"
];

$conn = sqlsrv_connect($serverName, $connectionOptions);

if ($conn === false) {
    die(print_r(sqlsrv_errors(), true));
} else {
    echo "連接成功!";
}
?>

4.2 PDO連接方式

try {
    $conn = new PDO(
        "sqlsrv:Server=your_server_ip,1433;Database=your_db",
        "sa",
        "your_password"
    );
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    die("連接失敗: " . $e->getMessage());
}

五、常見問題解決

5.1 連接超時

在連接字符串中添加超時參數:

"LoginTimeout" => 30

5.2 SSL加密問題

現代SQL Server默認要求加密連接,可在連接選項中禁用(不推薦):

"Encrypt" => false

或正確配置證書:

sudo curl -o /etc/ssl/certs/microsoft.cer \
    https://curl.haxx.se/ca/cacert.pem

5.3 中文亂碼

指定字符集:

"CharacterSet" => "UTF-8"

六、性能優化建議

  1. 使用連接池:通過sqlsrv_connectConnectionPooling選項啟用
  2. 預處理語句:始終使用參數化查詢
  3. 批處理操作:對于大量數據操作使用批量插入

示例批處理:

$params = [ [$_POST['name'], $_POST['price']] ];
$stmt = sqlsrv_prepare(
    $conn,
    "INSERT INTO Products (Name, Price) VALUES (?, ?)",
    $params
);
if (sqlsrv_execute($stmt) === false) {
    // 錯誤處理
}

七、安全注意事項

  1. 永遠不要在代碼中硬編碼憑據
  2. 使用最小權限原則創建數據庫用戶
  3. 啟用SQL Server的審計日志
  4. 定期更新ODBC驅動和PHP擴展

推薦使用環境變量存儲密碼:

getenv('DB_PASSWORD')

結語

通過本文的步驟,您已經成功在Linux系統上配置了PHP與SQL Server的連接。這種跨平臺方案不僅擴展了PHP的應用場景,還能有效利用SQL Server在企業環境中的優勢。當遇到問題時,建議查閱:

在實際生產環境中,建議進行充分的測試和性能評估,確保系統穩定可靠。 “`

注:本文實際約1500字,可根據需要調整具體章節的詳細程度。代碼塊中的服務器地址、用戶名密碼等需要替換為實際值。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女