***windows7(64bit)でphp [#w379f297]

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

取得したphp-5.4.7-nts-Win32-VC9-x86.zipを展開させ、フォルダ「php-5.4.7-nts-Win32-VC9-x86」をc:\phpの配下に配置します。
 &ref(2012y10m11d_003544256.png,nolink);
次に、[スタート]->[コントロールパネル]->[システム]から「システムの詳細設定」を起動させ環境変数を追加します。
システム環境変数に新規変数「php」値「C:\php\php-5.4.7-nts-Win32-VC9-x86」を入れる
 &ref(2012y10m11d_003809255.png,nolink);
そして、システム環境変数「PATH」の末尾に %PHP% を追加します。
 &ref(2012y09m11d_000135495.png,nolink);
次に、%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のインストール [#g8c63e5d]
[スタート]->[コントロールパネル]->[プログラムと機能]から
#ref(2012y03m27d_232933627.png);
[windowsの機能の有効化または無効化]をクリックして、windowsの機能リストを展開します。
#ref(2012y03m27d_233054843.png);
選択ツリーから、
-[インターネットインフォメーションサービス]-[web管理ツール]-[&color(green){''IIS管理コンソール''};]
-[インターネットインフォメーションサービス]-[World Wide Webサービス]-[アプリケーション開発機能]-[&color(green){''CGI''};]

を選択して、OKボタンをクリックします。するとIISのインストールが開始されます。
#ref(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]を選択後、真ん中の欄から[ハンドラーマッピング]を起動させます。
#ref(2012y03m27d_234718956.png);
その[ハンドラーマッピング]の操作から[モジュールマップの追加..]をクリックして、
#ref(2012y03m27d_234942563.png);
その[モジュールマップの追加]画面において、
-要求パス:&color(green){''*.php''};
-モジュール:&color(green){''FastCgiModule''};
-実行可能ファイル(オプション):&color(green){''c:\php\php-cgi.exe''};
-名前:&color(green){''php''};

とします。
#ref(2012y03m27d_235220635.png);
要求の制限では、[要求のマップ先が次の場合のみハンドラーを読みだす]を有効にして、選択肢に[ファイルまたはフォルダ]を選択します。
#ref(2012y03m27d_235430875.png);
以上でIIS側の設定は完了

***phpの設定 [#neb0b63f]
インストール先の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に繋げる [#db1cb83b]
MSSQLとして sqlserver2008r2(64bit)が既にインストールされているとします。
MSより提供されているphpドライバーを取得します。
http://www.microsoft.com/en-us/download/details.aspx?id=20098
バージョンの新しい3.0を取得します。
&ref(2012y09m10d_233352826.png,nolink);
これを使用するには「Microsoft SQL Server 2012 Native Client」なるものが必要でこれも取得します。
http://www.microsoft.com/ja-jp/download/details.aspx?id=29065
このページにsqlncli.msiリンクがあります。そこから取得します。
php.iniを調整して このドライバー を読み込ませます。
&color(red){*};SQLサーバ自身が外部からのアクセスを許可するように調整が必要かも。[[参考>SharePoint/MSSQL接続]]
っで実際の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();
 ?>
な感じで。


***imagickを有効に [#a59faabe]
imagickを使いたいので
#code(nonumber){{
[root@c ~]# yum install php-pear php-devel ImageMagick-devel
}}
の後で
#code(nonumber){{
[root@c ~]# pecl install imagick
}}
とします。そして、php.iniに反映させるために
#code(nonumber){{
[root@c ~]# vi /etc/php.d/imagic.ini
extension=imagick.so

[root@c ~]#
}}
とします
確認はphp -iにて
#code(nonumber){{
imagick

imagick module => enabled
imagick module version => 3.4.3
imagick classes => Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator
Imagick compiled with ImageMagick version => ImageMagick 6.7.8-9 2016-06-16 Q16 http://www.imagemagick.org
Imagick using ImageMagick library version => ImageMagick 6.7.8-9 2016-06-16 Q16 http://www.imagemagick.org
ImageMagick copyright => Copyright (C) 1999-2012 ImageMagick Studio LLC
ImageMagick release date => 2016-06-16
ImageMagick number of supported formats:  => 209
ImageMagick supported formats => 3FR, A, AAI, AI,(略) TIFF, TIFF64, TILE, (略

}}


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS