Windows用XAMPPからMicrosoft SQL Serverに接続できない

Windows用のXAMPPからMSSQLに接続するにはいろいろ手間をかけなければなりません。

一連の手順をメモします。

最新の純正ドライバを準備

まずはMicrosoftから純正のPHP用SQL Serverドライバを入手します。

こちらから> http://www.microsoft.com/download/en/details.aspx?id=20098

ダウンロードすると、「SQLSRV20.EXE」というファイルが落とされ、.EXEをダブルクリックして展開すると以下のようなファイルが並びます。

image

ファイル名の説明

いろいろ入っていますがそれぞれ細かく違いますので、何でもかんでも放り込むクセがある人は気をつけてください<自分

pdoが付いているものはpdo接続用です。

その後の5253というのは「PHPのバーション」です。
52=5.2.x、53=5.3.x用ということです。

次のtsntsは「スレッドセーフかどうか」の判定です。
ts=Thread Safe、nts=non Thread Safeです。

最後のvc6vc9重要です。
これは使用するPHP自体をコンパイルしたコンパイラ(ややこしい)のバージョンと同じものを入れなければなりません。

以下の手順でPHPのコンパイラバージョンを確認してください。

PHPのコンパイラのバージョンを確認

まずは普通にXAMPPを起動し、Apacheを起動します。

htdocsに「info.php」という名前のテキストファイルを作り、ファイル内に以下のコードを書きます。

<?php phpinfo(); ?>

ファイルを保存し、ブラウザからhttp://localhost/info.phpにアクセスします。

以下のような画面が表示されます。

明るい部分がコンパイラのバージョン番号ですね。
下記の場合は「VC9」が適合するバージョンです。

phpinfo

PHPのextフォルダにdllを移動

ということでPHP5.3、VC9用のdllを xampp > php > ext フォルダに入れます。

php.iniを開きます。

extension=php_bz2.dll
extension=php_curl.dll
;extension=php_dba.dll
extension=php_mbstring.dll
…

などと書いてある部分を見つけます。

一番下に

extension=php_sqlsrv_53_ts_vc9.dll

と書き足します。

当たり前ですが php_sqlsrv_53_ts_vc9.dll の部分は上記で選んだファイル名になります。

phpinfoの再確認

ファイルを保存し、Apacheを再起動します。

再度 http://localhost/info.php にアクセスします。

4eb9efe2d535cf5a77000016

このような項目が増えていれば問題ありません。

ちなみにVC9、VC6を間違えた場合は以下のようなエラーが出ます。

image

「PHP Startup: sqlsrv: Unable to initaliza module
Module compiled with build ID=API20090626,TS,VC6
PHPcompiled with build ID=API20090626,TS,VC9
These options need to match.」

これは先ほどのVC9、VC6の適合異常です。
再度確かめて適切なDLLを入れてください。

以上でWindows用XAMPPへのSqlserver接続設定は完了です!

以上の手順はmonoe’s blogさんを参考にしました。

有用な記事に感謝!