windows7(64bit)でphp

phpは、http://windows.php.net/download/ から取得します。
IISをwebサーバとするならVC9 x86 Non Thread Safeなバイナリ―を取得します。
2012y10m11d_002952016.png
インストーラ付きのmsi版は楽でしょうが、Zip版はその設定があからさまになるのでこちらを選択。

取得したphp-5.4.7-nts-Win32-VC9-x86.zipを展開させ、フォルダ「php-5.4.7-nts-Win32-VC9-x86」をc:\phpの配下に配置します。
 2012y10m11d_003544256.png
次に、[スタート]->[コントロールパネル]->[システム]から「システムの詳細設定」を起動させ環境変数を追加します。
システム環境変数に新規変数「php」値「C:\php\php-5.4.7-nts-Win32-VC9-x86」を入れる
 2012y10m11d_003809255.png
そして、システム環境変数「PATH」の末尾に %PHP% を追加します。
 2012y09m11d_000135495.png
次に、%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のインストール

[スタート]->[コントロールパネル]->[プログラムと機能]から

2012y03m27d_232933627.png

[windowsの機能の有効化または無効化]をクリックして、windowsの機能リストを展開します。

2012y03m27d_233054843.png

選択ツリーから、

  • [インターネットインフォメーションサービス]-[web管理ツール]-[IIS管理コンソール]
  • [インターネットインフォメーションサービス]-[World Wide Webサービス]-[アプリケーション開発機能]-[CGI]

を選択して、OKボタンをクリックします。するとIISのインストールが開始されます。

2012y03m27d_233253458.png

次に、IISの設定
まず、Windows7(64bit)は64bitOSなので、IISも64bitで稼働しています。ですが、phpは32bitなので
IISのアプリケーションプールを32bitに変更する必要があります。
[スタート]->[管理ツール]->[インターネットインフォメーションサービスマネージャ]を起動して、左ツリーを展開後、
[アプリケーションプール]ノードを選択します。標準で用意されているアプリケーションプールとして
  DefaultAppPool
があります。これを選択して、右の操作パネルから[詳細設定]をクリックします。
その詳細設定画面で、32ビットアプリケーションの有効化Trueに変更して、OKボタンを押します。
これでphpの32bitアプリケーションの対応は完了です。

次に、web内のphpのアプリケーションとphpを連動させるために、拡張子phpのものは指定したphpプログラムによって
稼働するように調整します。同じ[インターネットインフォメーションサービスマネージャ]内で、左ツリーを展開して、
[サイト]->[Default Web Site]を選択後、真ん中の欄から[ハンドラーマッピング]を起動させます。

2012y03m27d_234718956.png

その[ハンドラーマッピング]の操作から[モジュールマップの追加..]をクリックして、

2012y03m27d_234942563.png

その[モジュールマップの追加]画面において、

  • 要求パス:*.php
  • モジュール:FastCgiModule
  • 実行可能ファイル(オプション):c:\php\php-cgi.exe
  • 名前:php

とします。

2012y03m27d_235220635.png

要求の制限では、[要求のマップ先が次の場合のみハンドラーを読みだす]を有効にして、選択肢に[ファイルまたはフォルダ]を選択します。

2012y03m27d_235430875.png

以上で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を取得します。
2012y09m10d_233352826.png
これを使用するには「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();
?>

な感じで。


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2012-10-11 (木) 00:38:49 (1686d)