我有一個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 />";
}
?>