由於客戶的要求
導致現在的環境是客戶要用 Linux 上的 PHP 來連線MS SQL
參考文章是這一篇
http://www.ucamc.com/e-learning/computer-skills/146-php-sqlsrv.html
PHP 版本是 7.1
目前檢測結果是 Linux 跟 SQL 主機的防火牆都有相互加入
以下是測試連線的 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);
?>
但是最後都顯示連線失敗
參照畫面上出現的訊息找了一下解決方案
http://go.microsoft.com/fwlink/?LinkId=163712
推估是 ODBC 有問題
但是不知道問題點在哪裡
希望有經驗的前輩可以指點一下
提示不是寫著drive版本的問題?
看一下微軟網頁,
PHP
PHP for SQL Server driver version
ODBC Driver
SQL Server
Operating Systems
全部都要對應到版本
你的錯誤裡有叫你去下載ODBC 11 or 13
我想這就是關鍵吧
問題在於~
1.在 Linux 中不知道怎麼檢查這些套件的版本
2.文章裡的 ODBC 11 or 13 是 windows 安裝檔,但是我是 linux 系統
3.由於主機是多人共用單獨為此直接升級或是安裝一個套件,還要考慮到會不會跟現有的東西起衝突,這種方案可能性不大
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用的
非常感激上面的幾位前輩指點~m(_ _)m
不過要用哪種系統當 server 不是小弟可以決定的
小弟是在系統商工作的雜工
要用甚麼系統?這是客戶決定的~
我只能在可行的情況下處理~
至於系統問題
由於主機系統是 Linux + cPanel + CloudLinux 架構
PHP 系統完全由 CL 掌控
目前得到 CL 的技術回應
要求連線語法改用
$dbh = new PDO("dblib:host=%IP%;port=%PORT%;dbname=%DB_NAME%", "%DB_USER%", "%DB_PASS%");
目前已經回傳給客戶請他做測試了~
可以參考這裡試試看
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