【WindowsServer】IIS×PHP×SQLServer環境でデータベースをWEB表示する設定方法

IIS×PHP×SQLServer環境にして、
PHPでSQLServerのデータを呼び出すまでの準備をメモします。

PHP for SQL Server driver をインストールする

https://docs.microsoft.com/ja-jp/sql/connect/php/download-drivers-php-sql-server?view=sql-server-ver15
上記URL、もしくは「PHP for SQL Server driver」で検索しダウンロードページへ。

「Microsoft SQL Server 用 Drivers 5.6 for PHP」をダウンロード


→ファイルを実行(自己解凍形式のようなプログラムです)
デスクトップ等適当な場所指定して(ファイル複数あるので事前にフォルダ作成推奨)解凍
→c:\php\extのフォルダにほかのDLLが多数ある階層にdllファイルを入れる。(パスは人によって違う場合もある)全部必要はなく「php_pdo_sqlsrv_73_nts_x64.dll」と「php_sqlsrv_73_nts_x64.dll」の2つでOK。

ODBC Driver for SQL Serverをインストールする

https://docs.microsoft.com/ja-jp/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-2017
上記URLもしくは「ODBC Driver for SQL Server」で検索し、ダウンロードページへ。

現在(2020/1時点)の最新版はMicrosoft ODBC Driver 17 for SQL Server
Windows版をダウンロードします。クリックすると言語とビット数の選択も可能です。日本語64ビット版でいいと思います。


インストーラーを起動、そのまま次へで進んでインストールするだけです。

php.iniを編集する

c:\phpなどにあるphp.ini (ない場合は、php.ini-developmentをリネームする)をメモ帳などのテキストエディタで開き、以下2行を追記。


下の方(実際はどこでもOK)に2行を追記します。

extension=php_pdo_sqlsrv_73_nts_x64.dll
extension=php_sqlsrv_73_nts_x64.dll
保存して閉じます。
(ちなみにphp.iniの編集を反映させる場合は、IISを再起動[停止→開始]する必要があります)

phpinfo()で確認する

これまでの準備でSQLServerのドライバがphp上で読み込めているかを確認します。


①メモ帳などのテキストエディタに以下記述。

<?php
phpinfo();
?>

②IISで公開中のフォルダの中に「phpinfo.php」みたいな感じで保存する。(拡張子.phpならなんでもOK)


③クライアントでもサーバー側どちらでもいいので、ブラウザ(IEやChrome等)で開く。


④PDO 「sqlsrv」(MS SQLServerの事)が表示されていれば成功。

SQLServer内のテーブルをPHPで呼び出してみる(サンプルPHP)

IIS公開フォルダ内に以下のコードを記述したphpを配置する。

<head>
<title>PHPてすとだよ</title>
</head>
<style type="text/css">
table,td,th{
border-collapse: collapse;
border:1px solid #333;
}
</style>
<body>
PHPでSQLServerを呼び出す!
<table>

<?php
$dsn = 'sqlsrv:server=localhost;database=●DB名●';
$uid = 'sa';
$pwd = '●パスワード●';
$dbh = new PDO($dsn, $uid, $pwd);
$sqlt = "SELECT * FROM ●テーブル名●";
foreach ($dbh->query($sqlt) as $row) {
print("<tr><td>".$row['●項目1●']."</td>");
print("<td>".$row["●項目2●"]."</td></tr>");
}
$dbh = null;
?>

</table>
</body>
</html>

赤太字はご自身の設定に書き換えてください。(もちろん●の記号も消す)
server=localhostの部分は、このままでもいけるし、IPでもコンピュータ名でも可能です。saも違うIDの場合は書き換えます。

SSMSと比較。ちゃんとWEBでも呼び出せました!
500エラーとかでず、正常にテーブル上のデータが呼び出せていれば成功です。

今回の記事以上です。

コメント