PHPからSQL Serverに接続するには、Microsoftが提供する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アプリから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」という形式でファイル名が付けられている。これらは「」ページからダウンロードが可能だ。
要は、これら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をダウンロード/インストールする前にはよく確認しておこう。
本連載で使用している環境を列挙すると次のようになる。
前掲のシステム要件ページを参考にして、ここではPHP for SQL Server driver 5.3をダウンロードページから取得した。ダウンロードしたファイル(SQLSRV53.EXE)を実行し、任意のディレクトリにDLLファイル群を展開しておこう。
上に示したように、PHPは64ビットの非スレッドセーフ版で、バージョンは7.2だ。スレッドセーフか否かと、アーキテクチャを調べるにはコマンドラインで「php -i | findstr Thread」「php -i | findstr Arch」などのコマンドを実行するか、本連載の第1回で作成した以下のコードのみからなるWebアプリを実行し、ブラウザで表示して、「thread」や「arch」を検索すればよい。
<?php
phpinfo();
よって、使用するDLLファイルは次の2つとなる。
これらをPHPのインストールディレクトリにあるextディレクトリにコピーして、php.iniファイルには次の2行を加える。
extension=php_pdo_sqlsrv_72_nts_x64.dll
extension=php_sqlsrv_72_nts_x64.dll
修正後のファイルを保存する際には、PHPをインストールした場所によっては、管理者権限が必要になるかもしれない。例えば、C:\Program Files\PHPディレクトリにPHPをインストールしている場合、VS Codeでファイルを編集して保存しようとすると、次のようなダイアログが表示されるかもしれない。
このようなときには、ダイアログにある[管理者権限で再試行]ボタンをクリックして保存すればよい(あるいは管理者権限でエディタを開き直す)。
php.iniファイルを保存したら、IISを再起動しておこう。これでPHPからSQL Serverに接続する準備が完了したので、次ページでは簡単な(コンソールレベルの)アプリを書いてSQL Serverに接続をしてみよう。
Copyright© Digital Advantage Corp. All Rights Reserved.