連載
» 2018年10月23日 05時00分 公開

.NET開発者のためのPHPアプリお手軽開発入門:PHPからSQL Serverに接続してみよう (1/2)

PHPからSQL Serverに接続するには、Microsoftが提供するPHP拡張機能が必要だ。そのセットアップをし、接続を確認する簡単なコードを書いてみよう。

[かわさきしんじ,Insider.NET編集部]
「.NET開発者のためのPHPアプリお手軽開発入門」のインデックス

連載「.NET開発者のためのPHPアプリお手軽開発入門」

 前回前々回は、PHPプログラムを記述する上で覚えておきたい基礎構文やクラスなどについて見た。今回は、PHPからSQL Serverに接続するために必要となるMicrosoft Drivers for PHP for SQL Server(以下、PHP for SQL Server driver)をセットアップし、SQL Serverに接続してみよう。なお、今回は多くの開発マシンにインストール済みであろうSQL Server LocalDBを例とする。

PHP for SQL Server driverのインストール

 PHP for SQL Server driverはPHPアプリからSQL ServerへアクセスするためのPHP拡張機能であり、Microsoftが提供している。この拡張機能には「sqlsrv_」で始まる幾つかの関数が含まれていて、これらを利用してSQL Serverへアクセスできる。また、PHPではデータベースアクセスを抽象化する「PDO」(PHP Data Objects)と呼ばれる機構があり、これをサポートする拡張機能も同梱されている。前者は「php_sqlsrv_72_nts_x64.dll」のように「php_sqlsrv_<PHPバージョン>_<スレッドセーフか否か>_<アーキテクチャ>.dll」という形式でファイル名が付けられている。後者についても「php_pdo_sqlsrv_72_nts_x64.dll」のように「php_pdo_sqlsrv_<PHPバージョン>_<スレッドセーフか否か>_<アーキテクチャ>.dll」という形式でファイル名が付けられている。これらは「」ページからダウンロードが可能だ。

PHP for SQL Server driverのダウンロードページ PHP for SQL Server driverのダウンロードページ

 要は、これら2つのファイルをPHPのインストールディレクトリにあるextディレクトリにコピーして、php.iniファイルにこの拡張機能を利用するための設定を記述すればよい。

 ただし、<PHPバージョン>、<スレッドセーフか否か>、<アーキテクチャ>の違いによって拡張機能は多数提供されているので、自分が使っているPHPによって必要なものを選択する必要がある。これに加えてPHP for SQL Server driver自体のバージョンもある。本稿執筆時点(2018年10月22日)では、PHP for SQL Server driverの最新バージョンは5.3となっている。こちらのバージョンによってはサポートされないSQL Serverのバージョンも存在するので注意が必要だ。

 また、この他にMicrosoft ODBC Driver for SQL Server(以下、ODBC Driver)も必要になる。ただし、開発マシンであれば、何らかの形でこのドライバは既にインストールされているだろう。インストールされていなければ、「ODBC Driver for SQL Server のダウンロード」ページからダウンロード可能だ。筆者の環境にはODBC Driver 13.1がインストール済みだった。

 PHP、PHP for SQL Server driver、SQL Server、ODBC Driver、加えてOSバージョンのどの組み合わせがサポートされているかは「System Requirements for the Microsoft Drivers for PHP for SQL Server」ページで確認できるので、PHP for SQL Server driverをダウンロード/インストールする前にはよく確認しておこう。

 本連載で使用している環境を列挙すると次のようになる。

  • Windows 10 Pro
  • SQL Server LocalDB(SQL Server 2016)
  • PHP 7.2(64ビット、非スレッドセーフ)
  • ODBC Driver 13.1

 前掲のシステム要件ページを参考にして、ここではPHP for SQL Server driver 5.3をダウンロードページから取得した。ダウンロードしたファイル(SQLSRV53.EXE)を実行し、任意のディレクトリにDLLファイル群を展開しておこう。

PHP for SQL Server driver 5.3拡張機能を展開したところ PHP for SQL Server driver 5.3拡張機能を展開したところ

 上に示したように、PHPは64ビットの非スレッドセーフ版で、バージョンは7.2だ。スレッドセーフか否かと、アーキテクチャを調べるにはコマンドラインで「php -i | findstr Thread」「php -i | findstr Arch」などのコマンドを実行するか、本連載の第1回で作成した以下のコードのみからなるWebアプリを実行し、ブラウザで表示して、「thread」や「arch」を検索すればよい。

<?php
  phpinfo();


PHPのバージョン情報を表示するコード

PHPのバージョン情報を表示して、スレッドセーフか否かを検索しているところ PHPのバージョン情報を表示して、スレッドセーフか否かを検索しているところ

 よって、使用するDLLファイルは次の2つとなる。

  • php_pdo_sqlsrv_72_nts_x64.dll
  • php_sqlsrv_72_nts_x64.dll

 これらをPHPのインストールディレクトリにあるextディレクトリにコピーして、php.iniファイルには次の2行を加える。

extension=php_pdo_sqlsrv_72_nts_x64.dll
extension=php_sqlsrv_72_nts_x64.dll


PHP for SQL Server driverを使うための記述をphp.iniファイルに追加

 修正後のファイルを保存する際には、PHPをインストールした場所によっては、管理者権限が必要になるかもしれない。例えば、C:\Program Files\PHPディレクトリにPHPをインストールしている場合、VS Codeでファイルを編集して保存しようとすると、次のようなダイアログが表示されるかもしれない。

管理者権限でファイルを保存する必要があることも 管理者権限でファイルを保存する必要があることも

 このようなときには、ダイアログにある[管理者権限で再試行]ボタンをクリックして保存すればよい(あるいは管理者権限でエディタを開き直す)。

 php.iniファイルを保存したら、IISを再起動しておこう。これでPHPからSQL Serverに接続する準備が完了したので、次ページでは簡単な(コンソールレベルの)アプリを書いてSQL Serverに接続をしてみよう。

       1|2 次のページへ

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。