My puppyのブログ

学んだ事や作っているプログラムなどについて書いています。

Windows10からPHP7でAzure SQL Databaseに接続する方法

今回の環境:

  1. XAMPP for Windows 7.0.8
  2. Windows 10
  3. Azure SQL Database (すでにデータベース作成済みとします)

XAMPPをインストールしたWindows10上のlocalhostからPHP7でAzure SQL Databaseに接続する方法です。

こちらのその手順が書いてあります。

azure.microsoft.com

上のリンク先の「手順 1: 開発環境を設定する」の項目に書かれている「PHP 開発用の開発環境を構成する」をクリックすると、こちらのページ(英語)に飛びます。

Step 1: Configure development environment for PHP development

このページには英語でこう書かれています。

この中の「Download Microsoft PHP Driver」をクリックすると、「Microsoft Drivers for PHP for SQL Server」のページに飛びますので、「Download」ボタンを押下します。

すると「Choose the download you want」と表示されるのですが、一番下の「SQLSRV40.EXE」がPHP7用のファイルですのでチェックボックスにチェックを入れて、「Next」ボタンを押すとダウンロードが開始されます。

ダウンロードした「SQLSRV40.EXE」をダブルクリックして解凍すると、全部で12個のファイルが出てきます。

PHP7のインストールフォルダ直下のextフォルダ(例:C:\xampp\php\ext)に解凍された「php_sqlsrv_7_ts_x86.dll」や 「php_pdo_sqlsrv_7_ts_x86.dll」などのファイルをコピーします。

コピーし終わったら、これらの.dllファイルをPHP7に読み込む為に、「php.ini」(例:C:\xampp\php\php.ini)に以下の行を追加します。(参照:PHP SQL ドライバーの読み込み)

extension = "C:\xampp\php\ext\php_sqlsrv_7_ts_x86.dll"
extension = "C:\xampp\php\ext\php_pdo_sqlsrv_7_ts_x86.dll"

XAMPPのコントロールパネルからApacheを再起動して、「phpinfo();」で設定を確認すると、「sqlsrv」や「pdo_sqlsrv」の項目が追加されていると思います。

つぎに以下のページから、「Microsoft ODBC Driver 13 for SQL Server」をダウンロードしてインストールします。

Download Microsoft® ODBC Driver 13 for SQL Server® - Windows from Official Microsoft Download Center
(「ダウンロード」ボタンを押下すると、x86用かx64用かの選択画面が出ます。)

これでWindows10からPHP7を使ってAzure SQL Databaseに接続するためのドライバはインストール出来ました。

以下のPHPスクリプトで「myserver」、「AdventureWorks」、「MyUser」、「MyPassword」を設定してlocalhost上で実行すると、「Success!」が表示されてAzure SQL Databaseに接続できると思います。(参照:Step 3: Proof of concept connecting to SQL using PHP

<?php
    $serverName = "tcp:myserver.database.windows.net,1433";

    $connectionOptions = array( "Database"=>"AdventureWorks",
                                "Uid"=>"MyUser",
                                "PWD"=>"MyPassword");

    $conn = sqlsrv_connect( $serverName, $connectionOptions );

    if( $conn == false ){
        echo "Failure.";
    } else {
        echo "Success!";
    }