簡體   English   中英

使SQL Server的ODBC Driver 11適用於Azure網站中的PHP

[英]Making ODBC Driver 11 for SQL Server Available For PHP In Azure Website

我有一個在Azure網站中運行WordPress的PHP 5.5網站,該網站配置為與64位IIS一起運行,並且數據庫在MySQL中運行。 我想將站點轉換為在Azure中使用SQL Server而不是MySQL。

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

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

Microsoft SQL Server 3.1的PHP驅動程序說明中指出“ SQL Server 11版的Microsoft ODBC驅動程序11”也是必需的。 我已經下載了x64和x86版本,並嘗試從相關的Windows目錄中刪除這些DLL,並將它們與兩種結構的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 />";
}
?>

最后,我並沒有真正找到合適的解決方案,但事實證明,Azure網站已安裝了將SQL Server與PHP 5.4結合使用的所有功能。

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

並不是真正的解決方法,但是它已經使我(通常)到達了想要的位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM