見出し画像

IISと連携したPHPからSQL Serverへの接続(準備編)

上記で設定したPHPからSQL Serverへ接続します。

アプリケーションがデータベースに接続するにはエクステンションと呼ばれるソフトウェアを経由する必要があります。そのエクステンションはデータベース固有なもので運用する方法と抽象化されたエクステンションを使う方法があります。
データベース固有なものはデータベースの個性を生かした命令が可能となる反面、データベースの仕様変更やデータベースの切り替え時にアプリケーションを修正する必要があります。
抽象化されたエクステンションはデータベースが変わっても同じように扱える(100%では無いと思われる)為、アプリケーションの修正が無い(または少ない)ことがメリットです。
抽象化されたエクステンションの中でもWindowsユーザーにとってメジャーなものはODBCではないでしょうか。Microsoft AccessからODBC経由でデータベースに接続し、アプリケーションの開発をされた方も多いのではないでしょうか。
データベース種別ごとにODBCドライバがあることはご存じかと思います。
アプリケーションからODBCというエクステンションを経由してデータベース固有のODBCドライバを経由して、データベースに接続する。というイメージを持ってもらえるとわかりやすいかと思います。
・・・とここまでODBCを例にあげましたが、今回使用するのはPDOという抽象化されたエクステンションとなります。PDOを選択した理由は色々と後付けできますが、趣味と割り切ることが一番しっくりとくるかと思います。

SQL ServerにPDO接続を行う準備

CentOSで使っていた、PDO_DBLIBと呼ばれるドライバをPECLから・・・と考えていたのですが、

https://www.php.net/pdo_dblib

ん?『この拡張モジュールは、Windows 版では使えません。』・・・・。
(あまり好きじゃないのですが)Microsoft謹製のPDOドライバを使って接続する方法を記載します。

https://docs.microsoft.com/en-us/sql/connect/php/microsoft-php-driver-for-sql-server

画像1

赤枠で囲まれたところをクリックして、SQL Server用のPHPドライバをダウンロードします。

画像2

ダウンロードされた【SQLSRV510.ZIP】を展開します。

画像3

展開したファイルの命名ルール(PDOのみ)は
 php_pdo_sqlsrv_【phpのバージョン】_【PHP分類】_【OSアーキテクチャ】.dll
となります。
【PHP分類】はTS=スレッドセーフ(モジュール版)・NTS=ノン・スレッドセーフ(CGI版)と思ってください。
【OSアーキテクチャ】はx86=32bitのOS・x64=64bitのOSです。

適応するファイルをPHPインストールフォルダ下のextフォルダ内にコピーしてください。

IISとPHPの設定を上記ノートと同様に設定している方は
 C:\PHP-NTS\8.1\ext に 【php_pdo_sqlsrv_81_nts_x64.dll】
 C:\PHP-NTS\7.4\ext に 【php_pdo_sqlsrv_74_nts_x64.dll】
にコピーします。

つづいて【php.ini】の変更を行います。

C:\PHP-NTS\8.1\php.ini

(765行目付近)
; On windows:
extension_dir = "ext"945行目付近)
;SQL Server--2022/03/22 Updated
extension=php_pdo_sqlsrv_81_nts_x64.dll
※※※設定だけでチェックはしていません※※※

C:\PHP-NTS\7.4\php.ini

(761行目付近)
; On windows:
extension_dir = "ext"939行目付近)
;SQL Server--2022/03/22 Updated
extension=php_pdo_sqlsrv_74_nts_x64.dll

画像4

上記はINIファイル変更前のphpinfo()の値です。

画像5

INIファイル変更後のphpinfo()の値です。
PDOドライバに【sqlsrvr】が追加されました。
IISと連携したPHPからSQL Serverへの接続準備が整いました。


この記事が気に入ったらサポートをしてみませんか?