2016-03-15 18 views
1

我一直在爲我的android應用程序使用azure移動服務。 然後,我想用我的本地主機和遠程服務器使用Php訪問我的數據庫數據。如何使用Php從Linux服務器連接Azure中的SQL Server?

我嘗試了下面Azure文檔給出的代碼。

$conn = new PDO ("sqlsrv:server = tcp:MYSERVERNAME.database.windows.net,1433; Database = MY_DATABASE_NAME", "MY_USER_NAME", "MY_PASSWORD"); 
try { 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

} catch (PDOException $e) { 
    print("Error connecting to SQL Server."); 
    die(print_r($e)); 

}; 

當代碼爲localhost或遠程服務器上拼命地跑,也就是Linux服務器,我得到下面

enter image description here

編輯

我認爲這是一個關於Azure的防火牆錯誤規則和我在Azure防火牆規則中添加了我的IP號碼服務器

當我試圖通過SQLPro連接到服務器時,我可以連接成功,我開始查詢。但我不能通過本地主機與我的PHP代碼連接。

+0

關於使用Macbook的細節是無關緊要的。你修改了哪些Azure防火牆:SQL數據庫服務器防火牆?如果是這樣,你是如何設定的? (127.0.0.1不會幫助,因爲這是本地主機地址)。你應該用這個細節編輯你的問題。 –

回答

4

您使用的函數PDO sqlsrv:server需要SQLSRV extensionphp_pdo_sqlsrv_53_nts.dll,但它只與在Windows上運行的PHP兼容。

要在Unix中使用PHP連接到SQL服務器,可以使用ODBC擴展名和Microsoft's SQL Server ODBC Driver for Linux

有關詳細信息,請參閱http://php.net/manual/en/ref.pdo-sqlsrv.php

+0

你完全正確,我使用Azure Web App + SQL服務解決了我的問題。我使用這個資源https://azure.microsoft.com/en-us/documentation/articles/web-sites-php-sql-database-deploy-use-git/ –

1

從Linux服務器連接到Azure SQL DB的另一個建議是使用sqlshim。該sqlshim項目旨在複製的Microsoft SQL Server驅動程序PHP(SQLSRV)在Linux/OS X.

這裏是一個鏈接到項目:https://github.com/radsectors/sqlshim

這裏是你將如何安裝它:

Download the latest release from: https://github.com/radsectors/sqlshim/releases 
Extract src/sqlshim.php and src/globals.php. 
Include it. 
require 'src/sqlshim.php'; 

乾杯,
遇見

相關問題