windows7(64bit)でphp †
phpは、http://windows.php.net/download/ から取得します。
IISをwebサーバとするならVC9 x86 Non Thread Safeなバイナリ―を取得します。

インストーラ付きのmsi版は楽でしょうが、Zip版はその設定があからさまになるのでこちらを選択。
取得したphp-5.4.7-nts-Win32-VC9-x86.zipを展開させ、フォルダ「php-5.4.7-nts-Win32-VC9-x86」をc:\phpの配下に配置します。

次に、[スタート]->[コントロールパネル]->[システム]から「システムの詳細設定」を起動させ環境変数を追加します。
システム環境変数に新規変数「php」値「C:\php\php-5.4.7-nts-Win32-VC9-x86」を入れる

そして、システム環境変数「PATH」の末尾に %PHP% を追加します。

次に、%PHP%\php.ini-production を php.ini に変更して中身を適時調整する。
1.date.timezone ='Asia/Tokyo'
2.extension_dir = "ext"
3.(後述)MSSQLドライバ
extension=php_pdo_sqlsrv_54_nts_vc9.dll
extension=php_sqlsrv_54_nts_vc9.dll
IISのインストール †
[スタート]->[コントロールパネル]->[プログラムと機能]から
[windowsの機能の有効化または無効化]をクリックして、windowsの機能リストを展開します。
選択ツリーから、
- [インターネットインフォメーションサービス]-[web管理ツール]-[IIS管理コンソール]
- [インターネットインフォメーションサービス]-[World Wide Webサービス]-[アプリケーション開発機能]-[CGI]
を選択して、OKボタンをクリックします。するとIISのインストールが開始されます。
次に、IISの設定
まず、Windows7(64bit)は64bitOSなので、IISも64bitで稼働しています。ですが、phpは32bitなので
IISのアプリケーションプールを32bitに変更する必要があります。
[スタート]->[管理ツール]->[インターネットインフォメーションサービスマネージャ]を起動して、左ツリーを展開後、
[アプリケーションプール]ノードを選択します。標準で用意されているアプリケーションプールとして
DefaultAppPool
があります。これを選択して、右の操作パネルから[詳細設定]をクリックします。
その詳細設定画面で、32ビットアプリケーションの有効化をTrueに変更して、OKボタンを押します。
これでphpの32bitアプリケーションの対応は完了です。
次に、web内のphpのアプリケーションとphpを連動させるために、拡張子phpのものは指定したphpプログラムによって
稼働するように調整します。同じ[インターネットインフォメーションサービスマネージャ]内で、左ツリーを展開して、
[サイト]->[Default Web Site]を選択後、真ん中の欄から[ハンドラーマッピング]を起動させます。
その[ハンドラーマッピング]の操作から[モジュールマップの追加..]をクリックして、
その[モジュールマップの追加]画面において、
- 要求パス:*.php
- モジュール:FastCgiModule
- 実行可能ファイル(オプション):c:\php\php-cgi.exe
- 名前:php
とします。
要求の制限では、[要求のマップ先が次の場合のみハンドラーを読みだす]を有効にして、選択肢に[ファイルまたはフォルダ]を選択します。
以上でIIS側の設定は完了
phpの設定 †
インストール先のc:\phpにおいては、まず、
php.ini
を作成します。基本はphp.ini-productionをそのままphp.iniへ変更して構わない。
その後、php.iniの中身において
date.timezone ='Asia/Tokyo'
を付記して、追加拡張機能を読み込ませるために
extension_dir = "c:\php\ext"
を定義して、追加すべき拡張機能を有効にさせます。
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_pdo_mysql.dll
らで。
こられが有効かどうかは、IISのホームディレクトリーとなるc:\Inetpub\wwwroot直下に
phpinfo.php なる下記内容のファイルを
<?php phpinfo() ?>
作成して、ブラウザにて確認します。
MS sqlserverに繋げる †
MSSQLとして sqlserver2008r2(64bit)が既にインストールされているとします。
MSより提供されているphpドライバーを取得します。
http://www.microsoft.com/en-us/download/details.aspx?id=20098
バージョンの新しい3.0を取得します。

これを使用するには「Microsoft SQL Server 2012 Native Client」なるものが必要でこれも取得します。
http://www.microsoft.com/ja-jp/download/details.aspx?id=29065
このページにsqlncli.msiリンクがあります。そこから取得します。
php.iniを調整して このドライバー を読み込ませます。
*SQLサーバ自身が外部からのアクセスを許可するように調整が必要かも。参考
っで実際のphpスクリプトですが、
<?php
$dbh= new PDO("sqlsrv:server=w2\sharepoint;database=AdventureWorks2008R2", "foo","xxxxx");
$sql ="select count(*) from sales.store";
$sth=$dbh->prepare($sql);
$sth->execute();
$res = $sth->fetchAll();
print_r($res);
?>
こんなんでいいみたい。phpから信頼接続できる方法が分からない。なので、接続先のMSSQLの認証を混合モードにして
SQL内のアカウントでログインしています。
データ登録の際は
<?php
$id=1;
$dbh=new PDO('sqlsrv:server=sps\sharepoint;database=AdventureWorks2008R2','foo','xxxxx');
$sth = $dbh->prepare("insert into IMG (id) values (?)");
$sth->bindParam(1, $id, PDO::PARAM_INT);
$dbh->beginTransaction();
$sth->execute();
$dbh->commit();
?>
っと数値、文字列、時間とかは上記で賄えるが、LOB形式なイメージとかを扱うには sqlsvr では駄目みたい。
odbc経由のPDOで投入が必要らしい。
<?php
$id=1;
$fp = fopen('imagefile.png','rb');
$dsn = "odbc:DRIVER={SQL Server Native Client 11.0}; SERVER={sps\sharepoint};UID={foo};";
$dsn .= "PWD={xxxxx}; DATABASE={AdventureWorks2008R2}";
$dbh= new PDO ( $dsn, "foo", "xxxxx" );
$sth = $dbh->prepare("insert into IMG (id, img) values ( ?, ?)");
$sth->bindParam(1, $id, PDO::PARAM_INT);
$sth->bindParam(2, $fp, PDO::PARAM_LOB);
$dbh->beginTransaction();
$sth->execute();
$dbh->commit();
?>
な感じで。