iT邦幫忙

0

使用 Linux 上的 PHP 連線 MS SQL

由於客戶的要求
導致現在的環境是客戶要用 Linux 上的 PHP 來連線MS SQL
參考文章是這一篇
http://www.ucamc.com/e-learning/computer-skills/146-php-sqlsrv.html
PHP 版本是 7.1
https://ithelp.ithome.com.tw/upload/images/20180511/20078381lmfiaNxs4k.png
目前檢測結果是 Linux 跟 SQL 主機的防火牆都有相互加入

https://ithelp.ithome.com.tw/upload/images/20180511/20078381BleR16KB33.png

https://ithelp.ithome.com.tw/upload/images/20180511/20078381doRtQWOmqA.png
以下是測試連線的 php 程式

<?php
$serverName = "xxxxxxxx"; //serverName\instanceName
$connectionInfo = array( "Database"=>"xxx", "UID"=>"xxxx", "PWD"=>"xxxxxxxxxxxx", "CharacterSet" => "UTF-8");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn ) {
     echo "Connection established.<br />";
}else{
     echo "Connection could not be established.<br />";
     die( print_r( sqlsrv_errors(), true));
}
// Close the connection.
sqlsrv_close($conn);
?>

https://ithelp.ithome.com.tw/upload/images/20180511/20078381Tnmhx6pBsA.png

但是最後都顯示連線失敗
參照畫面上出現的訊息找了一下解決方案
http://go.microsoft.com/fwlink/?LinkId=163712

推估是 ODBC 有問題
但是不知道問題點在哪裡
希望有經驗的前輩可以指點一下

0

提示不是寫著drive版本的問題?

sanbis iT邦新手 3 級 ‧ 2018-05-11 13:51:15 檢舉

https://ithelp.ithome.com.tw/upload/images/20180511/20078381cLqqSAt6ek.png
https://ithelp.ithome.com.tw/upload/images/20180511/20078381AEEk6CVLkM.png

看不出來版本在哪裡
此外這台 Linux 主機是多人使用
為了單一用戶調整或是安裝 ODBC 可能性不大

0
hsiang11
iT邦研究生 5 級 ‧ 2018-05-11 14:53:08

看一下微軟網頁,
PHP
PHP for SQL Server driver version
ODBC Driver
SQL Server
Operating Systems
全部都要對應到版本
你的錯誤裡有叫你去下載ODBC 11 or 13
我想這就是關鍵吧

sanbis iT邦新手 3 級 ‧ 2018-05-11 15:21:10 檢舉

問題在於~
1.在 Linux 中不知道怎麼檢查這些套件的版本
2.文章裡的 ODBC 11 or 13 是 windows 安裝檔,但是我是 linux 系統
3.由於主機是多人共用單獨為此直接升級或是安裝一個套件,還要考慮到會不會跟現有的東西起衝突,這種方案可能性不大

hsiang11 iT邦研究生 5 級 ‧ 2018-05-11 16:18:50 檢舉

https://docs.microsoft.com/en-us/sql/connect/php/installation-tutorial-linux-mac?view=sql-server-2017#installing-the-drivers-on-red-hat-7
這一篇是前幾天更新的linux 安裝driver

1.看你對linux好像很不熟可能弄個windows server你還比較好解決問題
2.如果你怕出問題,不如另外找個pc來測試odbc
3.我記得ODBC是PC端連msSQL用的

sanbis iT邦新手 3 級 ‧ 2018-05-11 16:59:20 檢舉

非常感激上面的幾位前輩指點~m(_ _)m
不過要用哪種系統當 server 不是小弟可以決定的
小弟是在系統商工作的雜工
要用甚麼系統?這是客戶決定的~
我只能在可行的情況下處理~

至於系統問題
由於主機系統是 Linux + cPanel + CloudLinux 架構
PHP 系統完全由 CL 掌控
目前得到 CL 的技術回應
要求連線語法改用
$dbh = new PDO("dblib:host=%IP%;port=%PORT%;dbname=%DB_NAME%", "%DB_USER%", "%DB_PASS%");

目前已經回傳給客戶請他做測試了~

0
zivtor
iT邦新手 5 級 ‧ 2018-05-14 13:40:58

可以參考這裡試試看
https://github.com/Microsoft/msphpsql
以Ubuntu為例
Step 2.1 Install the PHP Driver for SQL Server
https://www.microsoft.com/en-us/sql-server/developer-get-started/php/ubuntu/step/2.html

sanbis iT邦新手 3 級 ‧ 2018-05-15 17:51:56 檢舉

由於是多人共用的主機
目前沒有打算安裝一些特別的套件
應該說~會在 Linux 主機上連 MS SQL 的人本來就不多
不一定會將整個主機改成可以這麼做的環境

我要發表回答

立即登入回答