MIS 腳印

記錄 IT 學習的軌跡

PHP 7.x PDO 連結 MS SQL Server 環境建置 for CentOS 7

如何在 CentOS 7 讓 PHP 7 透過 PDO 的方式來連結 Microsoft SQL Server Database 的建置教學。


安裝

PHP

SQL Server ODBC Driver

[root@localhost ~]# curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo
[root@localhost ~]# yum remove unixODBC-utf16 unixODBC-utf16-devel
[root@localhost ~]# ACCEPT_EULA=Y yum install -y msodbcsql17
[root@localhost ~]# ACCEPT_EULA=Y yum install -y mssql-tools
[root@localhost ~]# echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
[root@localhost ~]# echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
[root@localhost ~]# source ~/.bashrc
[root@localhost ~]# yum install -y unixODBC-devel

相關驅動

Linux 及 macOS Microsoft Drivers for PHP for SQL Server 安裝教學課程 | Microsoft DocsRed Hat 7 (CentOS 7) > 步驟 2: 安裝必要條件 的方式安裝會出現 Error,因為 CentOS 缺少 GCC 編譯器,就算是升級也是找到舊版的 GCC,因此參考 pecl install sqlsrv fails · Issue #726 · Microsoft/msphpsql · GitHub 的解決方式如下:

[root@localhost ~]# yum install -y centos-release-scl
[root@localhost ~]# yum install -y devtoolset-7
[root@localhost ~]# scl enable devtoolset-7 bash

SQL Server PDO 驅動

讓 PHP 可以透過 PDO 連結 SQL Server:

[root@localhost ~]# yum install -y php-sqlsrv

確認載入模組

確認已載入下列兩個 sqlsrv 模組:

[root@localhost ~]# php -m | grep sqlsrv
pdo_sqlsrv
sqlsrv

SELinux 安全性限制

SELinux 預設限制透過網路來與 DataBase 連結,必須啟用:

[root@localhost ~]# setsebool -P httpd_can_network_connect_db 1

PDO 連結 SQL Server 程式範例

使用 POD 連結 SQL Server 程式如下:

<?php
// 主機位址
$host = '192.168.3.251';
// PORT
$port = '1433';
// 資料庫名稱
$dbname = '';
// 帳號
$user = 'sa';
// 密碼
$passwd = '';

$dbConn = new PDO(
    "sqlsrv:server=$host,$port;Database=$dbname",
    $user,
    $passwd
);

$sql = 'SELECT SYS_VIEWID AS ID,
                SYS_Name AS name
        FROM FT_Employee
        WHERE SYS_VIEWID = :SYS_VIEWID';

$stmt = $dbConn->prepare($sql);
$stmt->execute(array(
    ':SYS_VIEWID' => '1020501'
));
$row = $stmt->fetch(PDO::FETCH_ASSOC);

echo '<pre>';
var_dump($row);
echo '</pre>';

啟動 PHP 內建 Web server (詳細使用方式可參考 PHP 內建 Web server 使用教學 for Linux):

[root@localhost ~]# php -S 0.0.0.0:80

開啟瀏覽器顯示 DabaBase 資料:

參考


發表迴響