misc.log

日常茶飯事とお仕事と

Windows Server 2008 R2上のPHPからSQL Server 2000に接続する

7月に、Windows Server 2008 R2上で動くPHPで作ったアプリから、SQL Server 2000にアクセスできるか?というのを試していたのですが、試行の過程を記録していませんでした。簡単ですがメモっておきます。多分あとで自分が使うので。

発端については7月15日に書いていました。これです。

backyard.hatenablog.com

Windows Server 2008 R2IISPHPを入れる

Windows Server 2008 R2(64bit)に、PHP 5.6.11を入れました。設定はServer APIとしてCGI/FastCGIを利用、入れたバージョンはNTS(非スレッドセーフ版)です。このバージョンはVisual C++ 2012のランタイムも必要なので、それもダウンロードして一緒に入れています。

とりあえず、IISを動くようにしてphpinfo()だけを書いたページを作り、PHP稼働確認と設定を確認したのがこの画面。

f:id:frontline:20150818210407j:plain

SQL Server 2000を用意する

なんで今更SQL Server 2000なの?と思われるかもしれませんが、世の中、常に最新版にあげ続けられ「ない」環境だってあるんです。そこはそういうモノだとおもって見逃してください(業務系の仕事やってる人なら判ってもらえますよね?ww)。

SQL Server 2000をWindows Server 2008 R2上に入れられれば便利だったのですが、2008 R2上ではSQL Serverインストーラーが動きませんでした。バージョンチェックを行っているようです。仕方ないのでWindows XP環境を仮想環境につくってそちらに導入。ま、実際のサーバーもWebサーバーとDBサーバーが分かれる可能性が高いので、このほうがリアルなテストになりますね。

SQL Serverには簡単なテーブル「NAMES」を作って、バカみたいなデータを入れておきます。イマドキこれかよ、みたいな。もちろん(笑)、管理者アカウントはsa/saです(笑←やめなされ)。

f:id:frontline:20150818210431j:plain

データを読み出すコードを書く

ゴメンナサイ、コードはIBMのサイトにあったものを転用させてもらいました。

初めて PHPODBC を使ってみる/PHP による汎用的なデータベース接続の初心者向けガイド
https://www.ibm.com/developerworks/jp/opensource/library/os-php-odbc/

これをべた貼りしただけのファイルを「db.php」としてIISの公開フォルダに置きます。

<?php
	$connection_string = 'DRIVER={SQL Server};SERVER=192.168.0.18;DATABASE=test';
	$user = 'sa';
	$pass = 'sa';
	$connection = odbc_connect( $connection_string, $user, $pass );

	$sql = "SELECT * from NAMES";
	$rs = odbc_exec($connection,$sql);
	echo "<table><tr>";
	echo "<th>Test</th></tr>";
	
	while (odbc_fetch_row($rs))
	{
		$result = odbc_result($rs,"name");
		echo "<tr><td>$result</td></tr>";
	}
	odbc_close($connection);
	echo "</table>";
?>

アクセスする

同じネットワーク上のWindows 7端末にはいったChromeからアクセスしてみました。この通り。

f:id:frontline:20150818210529j:plain

実は文字化けしていたのでエンコード設定をブラウザ側でSJISに替えていますが、まぁ、読み出しは成功です。というわけで、繋がる/繋がらないといわれれば、繋がります、ってことが確認できました。


いきなりはじめるPHP~ワクワク・ドキドキの入門教室~

いきなりはじめるPHP~ワクワク・ドキドキの入門教室~