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
[スタート]->[コントロールパネル]->[プログラムと機能]から
[windowsの機能の有効化または無効化]をクリックして、windowsの機能リストを展開します。
選択ツリーから、
を選択して、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]を選択後、真ん中の欄から[ハンドラーマッピング]を起動させます。
その[ハンドラーマッピング]の操作から[モジュールマップの追加..]をクリックして、
その[モジュールマップの追加]画面において、
とします。
要求の制限では、[要求のマップ先が次の場合のみハンドラーを読みだす]を有効にして、選択肢に[ファイルまたはフォルダ]を選択します。
以上でIIS側の設定は完了
インストール先の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() ?>
作成して、ブラウザにて確認します。
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(); ?>
な感じで。