Re: [請益] 如何在Debian使用php存取sqlserver[8/14edit]
原文恕刪 我有嘗試灌了 debian 8 的 VM 並實作出所有功能
以下是我做的努力 分享看看
環境:
debian 8 with debian gnome desktop and ssh server
wget 1.16
php 7.2
sql server : 在另一台電腦用 docker microsoft/mssql-server-linux
為 sql server 2017 版本
針對一些關鍵環節:
(1)
: 在執行這一行的時候遇到問題
: wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
: 系統回復
: wget: not an http or ftp url: https://packages.sury.org/php/apt.gpg
我使用 wget 時看了一下版本為 1.16 比原po 推文說明的 1.18 版本要舊
推測 wget https 失敗是因為少灌了憑證的套件 ca-certificates
參考這篇: http://tinyurl.com/yc4u3uuu
(2) php 灌 sql server 驅動 sqlsrv
使用 php-pear 的 pecl 安裝,需要相依套件為 php-pear php7.2-dev unixodbc-dev
這裡最重要的是找到合適的套件庫
原po使用的 https://packages.sury.org/php/ 已足夠
同時參考原po 推文中的連結安裝 http://tinyurl.com/yce2xf5r
(3) 安裝 ms 的 odbc driver
參考 http://tinyurl.com/yan5dnyx
使用微軟提供的套件庫 https://packages.microsoft.com/config/debian/8/prod.list
在 linux debian 8 安裝 msodbcsql17
(4) php 程式使用 PDO
注意 dns 即可,附上官網說明
http://php.net/manual/ru/ref.pdo-sqlsrv.connection.php
操作步驟:
sudo apt-get install curl apt-transport-https lsb-release ca-certificates
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg \
https://packages.sury.org/php/apt.gpg
sudo echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | \
sudo tee /etc/apt/sources.list.d/php.list
sudo apt-get update
sudo apt-get install php-pear php7.2 php7.2-dev
sudo apt-get install unixodbc-dev
sudo pecl install sqlsrv pdo_sqlsrv
若權限不夠 直接開vim 寫入就好或是使用root
sudo su
echo -e "; priority=20\nextension=pdo_sqlsrv.so" > \
/etc/php/7.2/mods-available/pdo_sqlsrv.ini
echo -e "; priority=20\nextension=sqlsrv.so" > \
/etc/php/7.2/mods-available/sqlsrv.ini
exit
sudo phpenmod sqlsrv pdo_sqlsrv
sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/debian/8/prod.list > \
/etc/apt/sources.list.d/mssql-release.list
exit
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install msodbcsql17
之後再使用
php -m 或是 <?php phpinfo();?>
驗證使否有安裝成功就好,有出現 sqlsrv、pdo_sqlsrv 就ok
連線測試程式
<?php
try
{
$username = 'SA';
$password = '<your_sa_password>';
$dsn = "sqlsrv:Server=ip,1433;Database=testdb";
$pdo = new PDO($dsn, $username, $password);
foreach($pdo->query('select @@version') as $result) {
var_dump($result);
}
$pdo = null;
} catch (PDOException $e) {
echo $e->getMessage();
}
結果:
https://imgur.com/LVUBJJp
-------------------------------------------------------------
後記:
同樣的站台之前有在 centOS 上完成安裝,步驟差異很多卻簡單不少
因為我使用remi軟體庫 而這只有在 rpm 的體系才有支持
架站灌軟體回到原點最痛苦的就是 : 相依套件與軟體灌不完全的問題
微軟如果沒有提供可以在linux上跑的driver與軟體庫,真的沒轍
而這案例有提供相關的軟體庫與套件,多方比對官方網站跟google的訊息
加上自己的經驗完成的,我不認為在linux 上跑 MS 的東西是爆坑
只是有沒有可靠的套件庫與 MS 的 sql server目前對linux支持到什麼程度而已
我不會在正式環境或是專案用linux 跑 sql server
但是使用linux 架站 php 裝上sql server 的驅動是我覺得值得嘗試的功能
非常有趣也討論看看
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.168.168.11
※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1534644573.A.1C1.html
推
08/19 10:24,
6年前
, 1F
08/19 10:24, 1F
※ 編輯: ri3567 (118.168.168.11), 08/19/2018 10:29:03
推
08/20 08:55,
6年前
, 2F
08/20 08:55, 2F
推
08/22 23:35,
6年前
, 3F
08/22 23:35, 3F
→
08/22 23:36,
6年前
, 4F
08/22 23:36, 4F
→
08/22 23:37,
6年前
, 5F
08/22 23:37, 5F
→
08/22 23:38,
6年前
, 6F
08/22 23:38, 6F
→
08/22 23:39,
6年前
, 7F
08/22 23:39, 7F
→
08/22 23:40,
6年前
, 8F
08/22 23:40, 8F
推
08/22 23:43,
6年前
, 9F
08/22 23:43, 9F
→
08/22 23:43,
6年前
, 10F
08/22 23:43, 10F
→
08/22 23:45,
6年前
, 11F
08/22 23:45, 11F
→
08/22 23:46,
6年前
, 12F
08/22 23:46, 12F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
PHP 近期熱門文章
PTT數位生活區 即時熱門文章