2015-02-09 68 views
1

我有一個PHP 5.5網站在Azure網站中運行WordPress,配置爲使用64位IIS運行,數據庫在MySQL中運行。我想將該網站轉換爲使用Azure中的SQL Server而不是MySQL。使ODBC驅動程序11 for SQL Server可用於PHP Azure網站

我已經安裝了WP Db Abstraction插件,並按照其設置說明進行操作。我選擇使用sqlsrv驅動程序,所以我安裝了Microsoft Drivers for PHP for SQL Server 3.1並將它們添加到WordPress網站的文件夾中,並將它們配置爲擴展名。在測試頁上調用phpinfo()顯示sqlsrv驅動程序已加載到PHP中,並且還報告PHP是x86。

我還設置了數據庫,用戶和密碼,並測試了可以使用SQLCMD成功連接到它。

用於SQL Server 3.1的Microsoft驅動程序PHP指示聲明還需要「用於SQL Server版本11的Microsoft ODBC驅動程序11」。我已經下載了x64和x86版本,並嘗試將DLL從相關的Windows目錄中除去,並將它們添加到兩個體系結構的PHP驅動程序的擴展目錄中,但都沒有成功。

當試圖連接到從運行PHP的網站上的SQL Azure數據庫,我剛剛得到這個錯誤:

This extension requires the ODBC Driver 11 for SQL Server. Access the following URL to download the ODBC Driver 11 for SQL Server for x86: http://go.microsoft.com/fwlink/?LinkId=163712

因爲我有相對於WordPress站點根目錄是驅動程序的DLL文件:

  • ext\msodbcsql11.dll
  • ext\php_sqlsrv_55_nts.dll
  • ext\1033\msodbcsqlr11.rll

我有以下的Azure管理門戶網站設置爲網站的應用程序設置:

PHP_EXTENSIONS:ext\php_sqlsrv_55_nts.dll

所有我可以計算的是,我現在不是缺少從ODBC驅動程序的東西,或者我如何讓它們可用於PHP驅動程序是不正確的。

有沒有人有任何想法,我已經錯過了,或爲什麼這是行不通的?

下面是我用來測試PHP中的SQL Server連接性的測試代碼。

<?php 
$serverName = "MYSERVER.database.windows.net,1433"; 
$connOptions = array("UID"=>"MYUSERNAME", "PWD"=>"MYPASSWORD"); 
$conn = sqlsrv_connect($serverName, $connOptions); 

if($conn === false) { 
    die(print_r(sqlsrv_errors(), true)); 
} 

if($client_info = sqlsrv_client_info($conn)) { 
    foreach($client_info as $key => $value) { 
     echo $key.": ".$value."<br />"; 
    } 
} else { 
    echo "Error in retrieving client info.<br />"; 
} 
?> 

回答

0

我真的沒有發現到底這是一個妥善的解決辦法,但事實證明,所有的位使用SQL Server和PHP 5.4已經安裝在Azure的網站。

我從PHP 5.5降級到5.4,然後SQL Server連接開始工作。

不是一個修復,但它讓我到了我想要的位置(主要是)。

相關問題