‘環境’ カテゴリーのアーカイブ

ディレクトリごとのPHPパラメータの変更

2009年1月7日 水曜日

Apacheで特定のディレクトリだけPHPの設定(php.iniの値)を変更したい場合は、.htaccessファイルなどで設定可能ですが、IISではWindowsレジストリに設定する。

※[2009/04/13]IISマネージャでディレクトリごとに任意のphp.iniファイルを指定する方法がわかりました。そっちのが良いかも。
>>>ディレクトリごとのPHPパラメータの変更(2)

設定値は、レジストリキー HKLM\SOFTWARE\PHP\Per Directory Values に保存され、そのサブキーがパス名となる。

例えば、ディレクトリ c:\inetpub\wwwroot に対する設定値は、 キー HKLM\SOFTWARE\PHP\Per Directory Values\c\inetpub\wwwroot に保存される。

ディレクトリに対する設定は、そのディレクトリ、 およびそのサブディレクトリで実行されるすべてのスクリプトで有効となる。

PHP 設定オプションのディレクティブを名前とする文字列値をキーに登録する。

また、値のデータに PHP 定数を記述しても解釈されないので、注意すること。

しかし、PHP_INI_USER で変更可能な設定値はこの方法で設定することが可能だが、 PHP_INI_PERDIR な値は設定できない。

参考)
http://www.php.net/manual/ja/configuration.changes.php#configuration.changes.windows

ActivePerl

2009年1月6日 火曜日

Windows Web Server 2008 & IIS7.0でperl CGIを動かすためには、Windows用のPerlディストリビューションのActivePerlを利用します。

  1. ダウンロード
    http://www.activestate.com/activeperl/downloads/からWindows MSWin32 x86 をダウンロードする。
    (64bit OS環境であってもx86版にする。現在x64版のPPMがほとんど用意されていないため。)
    (現在、5.8系と5.10系があるが、5.8系のが無難かも。)
  2. ダウンロードしたファイル(ex. ActivePerl-5.8.9.825-MSWin32-x86-288577.msi)を実行し、インストールする。
    インストールオプションはデフォルトのままインストールしてしまってよいだろう。
  3. IISの設定変更
    1. [スタート] - [管理ツール] - [インターネット インフォメーション サービス (IIS) マネージャ]を起動する。
    2. 左側のツリーから該当のサイト(ex. Default Web Site)を選択し、「ハンドラ マッピング」をダブルクリックする。
      activeperl-iis01
    3. 右側の操作エリアの「モジュールマップの追加」をクリックする。
      activeperl-iis02
    4. 「モジュールマップの追加」画面で以下を入力する。
      activeperl-iis03

      要求パス *.cgi
      モジュール CgiModule
      実行可能ファイル (オプション) {perlをインストールしたフォルダ}¥bin¥perl.exe "%s" %sex.) C:¥Perl¥bin¥perl.exe ”%s" %s
      名前 perl CGI
    5. 「モジュール マップの追加」メッセージで、「はい」をクリックする。
    6. cgiのハンドラマッピングが追加される。
      activeperl-iis04
    7. 既定のドキュメントにindex.cgiを追加する。
      左側ツリーで「コンピュータ名」を選択し、「既定のドキュメント」をダブルクリックする。
      php-setup05
    8. 「既定のドキュメント」画面で、右側の操作エリアの「追加」をクリックする。
      php-setup06
    9. 「既定のドキュメントを追加」画面で、「index.cgi」と入力する。
    10. 「既定のドキュメント」画面に戻り、index.cgiが一覧に追加されていることを確認する。

以上

IISログ出力先

2009年1月3日 土曜日

IISのログ出力先はデフォルトだと、

アクセスログ

%SystemDrive%¥inetpub¥logs¥LogFiles

エラーログ

%SystemDrive%¥inetpub¥logs¥FailedReqLogFiles

である。

IIS仮想ディレクトリの作成

2008年12月29日 月曜日

任意のフォルダにインストールしたWebアプリケーションを公開するために、そのフォルダをIISの仮想ディレクトリとしてマッピングします。

そうすることで、http://www.yourdomain.com/{仮想ディレクトリ名}/ というURLでセスすることができるようになります。

  1. インターネット インフォメーション サービス (IIS) マネージャの左側ツリーでphpMyAdmin用の仮想ディレクトリを追加するサイト(ex. Default Web Site)を選択し、右側の操作エリアで「仮想ディレクトリの表示」をクリックする。
    phpmyadmin-setup00
  2. 操作エリアで「仮想ディレクトリの追加」をクリックする。
    phpmyadmin-setup01
  3. 「仮想ディレクトリの追加」画面で、URLのディレクトリとしてのエイリアスとアプリケーションをインストールした物理パスを指定して「OK」する。
    エイリアス 仮想ディレクトリにアクセスするためのURL 内で使用される仮想パス

    ex.) wordpress

    http://www.~.com/wordpress/でアクセスできる

    物理パス アプリケーションをインストールしたフルパス

    iis-alias03

    これで仮想ディレクトリの作成は終了。

    ※仮想ディレクトリとしてマッピングする方法のほかに、Webサイトを追加する方法もあります。

phpMyAdmin

2008年12月29日 月曜日

phpMyAdminは、WebブラウザでMySQLデータベースを管理するツールです。

Windows Web Server 2008 + IIS7.0へのphpMyAdminのインストール手順を以下に示します。

  1. PHPのインストール
    PHPがインストールされていない場合は、本サイトのPHPページを参照して、PHPをインストールする。
  2. ダウンロード
    http://www.phpmyadmin.net/home_page/downloads.phpからall languageのzipファイルをダウンロードする。
    現在、Version 3.x系とVersion 2.x系が存在するが、3.x系はMySQL 5.0以上しか管理できない。
    MySQL 4.x以前を管理したい場合は、2.x系を利用する。
    今回はMySQL 5.1を対象とするので、3.x系をインストールするものとし「phpMyAdmin-3.x.x-all-languages.zip」をダウンロードする。
  3. ダウンロードしたファイルをインストールしたい任意のフォルダに解凍する。
    ex.) C:¥WebApplications¥phpMyAdmin-3.1
    以降このフォルダを、「PHPMYADMIN_HOME」と記述する。
  4. php.iniの設定
    phpをインストールしたフォルダにあるphp.iniに対し、PHPのインストール時に設定したこのブログに書いてあるPHPアプリケーションのすべてに共通する設定に加え、以下を設定する。

    extension=php_mcrypt.dll
    extension=php_mysql.dll
    extension=php_zip.dll
    extension=php_bz2.dll

    設定後、IISを再起動する。

  5. phpMyAdminの設定ファイルを作成する。
    PHPMYADMIN_HOME¥config.sample.inc.phpをPHPMYADMIN_HOME¥config.inc.phpというファイルにコピーする。
    このファイルにはMySQLデータベースへの接続設定が書かれている。
  6. config.inc.phpを変更する。
    $cfg['blowfish_secret']に適当な長い文字列を代入する。この文字列は推測されづらいものであれば何でもよい。
    ex.)

    $cfg['blowfish_secret'] = 'a;orfhsy8uaw4rthjhJDHfI'

    MySQLの受信ポートを変更している場合は、

    $cfg['Servers'][$i]['port'] = 'MySQL受信ポート番号';

    と追記する。

  7. IIS仮想ディレクトリの設定
    「IIS仮想ディレクトリの作成」を参照して、IISの仮想ディレクトリを追加する。
    物理パスにはPHPMYADMIN_HOME(ex. C:¥WebApplications¥phpmyadmin)を指定する。
  8. Webブラウザでアクセスして動作を確認する。
    ex.) http://localhost/phpmyadmin/
    phpmyadmin-setup03
  9. ログインすると以下のような画面になる。
    phpmyadmin-setup04

以上

php.ini

2008年12月29日 月曜日

PHPインストールのページでも書いていることではあるが、php.iniの設定を記載しておく。

pnp.ini-recommendedをphp.iniにコピー

このブログに書いてあるPHPアプリケーションのすべてに共通する設定

fastcgi.impersonate = 1
cgi.fix_pathinfo=1
cgi.force_redirect = 0
extension_dir = “./ext”
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
date.timezone = Asia/Tokyo
SMTP = localhost
smtp_port = 25
sendmail_from = me@example.com #要変更

ほとんどのPHPアプリケーションで必要な設定

extension=php_mcrypt.dll
extension=php_mysql.dll
extension=php_zip.dll
extension=php_bz2.dll

MySQL

2008年12月29日 月曜日

Windows Server 2008へのMySQL Community Server 5.1のインストール手順を以下に示します。

  1. ダウンロード
    ダウンロードサイトでインストール先のWindowsが32bitであれば「Windows」を、64bitであれば「Windows x64」の「Windows ZIP/Setup.EXE」をダウンロードする。
    ※ダウンロードのためには、ユーザー登録が必要。
  2. ダウンロードしたzipファイルを解凍し、「Setup.exe」を実行する。
  3. インストーラが起動しいくつか進んで、「Setup Type」画面で、「Custom」を選択する。
  4. 「Custom Setup」画面で、必要なければ「Documentation」をはずす。
  5. 「Ready to Install the Program」画面で内容を確認し、「Install」をクリックする。
  6. インストール処理が完了すると、MySQL Enterpriseの宣伝がでるので先に進む。
  7. 「Wizard Completed」画面で、「Configure the MySQL Server now」をチェックし「Finish」をクリックする。
  8. 引き続き「MySQL Server Instance Configuration Wizard」が起動するので「Next」をクリックする。
  9. ここから先は要件に合わせて設定していく。
    参考までに私が設定した内容を示しておく。
  10. configuration type
    「Detailed Confiuration」を選択
  11. server type
    同じマシンでWebサーバーも稼働させるので「Server Machine」を選択
    MySQL サーバーだけを稼働させるなら「Dedicated MySQL Server Machine」を選択すると良いだろう。
  12. database usage
    「Multifunctional Database」を選択
    InnoDBなどトランザクションを管理するストレージしか使わないなら「Transactional Database Only」を、逆にMyISAMなどのトランザクションを管理しないストレージエンジンしかつかわないのなら「Non-Transactional Database Only」を選択すると良いだろう。
  13. InnoDB Tablespace Settings
    この画面は(12)でNon-Transactional Database Onlyを選択していたら表示されないかもしれない。
    InnoDBのデータファイルが配置されるディレクトリとして「C:¥MySQL Datafiles¥」を選択した。
  14. approximate number of concurrent connections to the server
    「Online Transaction Processing (OLTP)」を選択
    一般的なWebアプリケーションでは、これを選択することが多いと思われる。
    少ないユーザーで大量のデータからの集計処理を行うことがほとんどの場合などは「Decision Support (DSS)/OLAP」を選択すると良いだろう。
  15. networking options
    TCP/IPでの接続は必要なので「Enable TCP/IP Networking」を選択
    接続を受け付けるポート番号である「Port Number」は、セキュリティ向上のために変えておいた方が良いかもしれない。(私は変えている。)
    「Enable Strict Mode」はチェックしておこう。
  16. default character set
    「Best Support For Multilingualism」を選択し、デフォルトキャラクタセットをUTF-8に。
  17. Windows options
    Windowsサービスに登録するために「Install As Windows Service」を選択。
    「Service Name」は、他のバージョンのMySQLをインストールする可能性もあるので「MySQL51」とした。
    コマンドラインなどでmysqlコマンドなどを利用する場合は「Include Bin Directory in Windows PATH」を選択しておくとよい。
  18. security options
    「Modify Security Settings」を選択し、rootユーザーのパスワードを設定しておくべきである。
  19. これで設定項目はおしまい。
  20. Windowsのサーバー マネージャの「サービス」で、登録したサービス(ex. MySQL51)が開始されていることを確認しよう

この手順でインストールすると、デフォルトのストレージエンジンがInnoDBになる。
オープンソースのWebアプリケーションではMyISAMでの利用を前提している(あるいはストレージエンジンを意識していない)ものが多いため、そのアプリケーションの動作に影響が出ることがある。

そのためデフォルトのストレージエンジンはMyISAMに変更したほうが良いだろう。

デフォルトのストレージエンジンの変更方法は、my.iniファイルの[mysqld]セクションでdefault-storage-engineをMyISAMにする。

[mysqld]
default-storage-engine=MyISAM

以上

SMTPサーバー

2008年12月29日 月曜日

Windows版のPHPでは、メールの配信にSMTPサーバーを使うのが一般的である。

しかし、PHPは、POP before SMTPやSMTP Authなどの認証には一切対応していない。

しかし昨今では、インターネット上に認証の不要なSMTPサーバーはほとんどない。

そこで、PHPが実行されるWindows Server 2008にSMTPサーバー機能をインストールする手順を示す。

  1. 「サーバー マネージャ」を起動し、「機能の概要」で「機能の追加」をクリックする。
    smtp-install01
  2. 「機能の選択」画面で、「SMTPサーバー」を選択する。
    smtp-install02
  3. 「機能の追加ウィザード」画面で、「必要な役割サービスを追加」をクリックする。
  4. 「機能の選択」画面に戻り、「SMTPサーバー」がチェックされていることを確認し「次へ」をクリックする。
  5. 「Web サーバー(IIS)」画面で「次へ」をクリックする。
  6. 「役割サービスの選択」画面で「次へ」をクリックする。
  7. 「インストール オプションの確認」画面で「SMTPサーバー」がインストールされることを確認する。
  8. インストール処理が完了するのを待ち、「インストールの結果」画面で、SMTPサーバーのインストールが正常に完了していることを確認する。
  9. 「サーバーマネージャ」に戻り、機能にSMTPサーバーが追加されていることを確認する。
    smtp-install03
  10. 引き続き、SMTPサーバーの設定をする。
    [スタート]メニュー - [管理ツール] - [インターネット インフォメーション サービス (IIS) 6.0 マネージャ]を選択し起動する。
  11. 「インターネット インフォメーション サービス (IIS) 6.0 マネージャ」の左側ツリーで「[SMTP Virtual Server #1]」を右クリックし、「プロパティ」を選択する。
    smtp-setup01
  12. 「[SMTP Virtual Server #1]のプロパティ」画面で「アクセス」タブを選択し、接続制御の「接続」をクリックする。
    smtp-setup02
  13. 「接続」画面で、「以下のリストに含まれるコンピュータのみ」を選択し、「追加」をクリックする。
    smtp-setup03
  14. 「コンピュータ」画面で、「1台のコンピュータ」を選択し、IPアドレスに「127.0.0.1」と記入し「OK」をクリックする。
  15. 「接続」画面に戻り、リストで127.0.0.1が許可されていることを確認し「OK」をクリックする。
  16. 「[SMTP Virtual Server #1]のプロパティ」画面の「アクセス」タブに戻り、中継の制限の「中継」をクリックする。
  17. 「中継の制限」画面で、「以下のリストに含まれるコンピュータのみ」を選択し、「上のコンピュータの一覧に関係なく、正しく認証されたすべてのコンピュータが、この仮想サーバーを中継に利用する」からチェックをはずし、「追加」をクリックする。
    smtp-setup04
  18. 「コンピュータ」画面で、「1台のコンピュータ」を選択し、IPアドレスに「127.0.0.1」と記入し「OK」をクリックする。
  19. 「中継の制限」画面に戻り、リストで127.0.0.1が許可されていることを確認し「OK」をクリックする。
  20. Windowsのサービス画面で「Simple Mail Transfer Protocol (SMTP)」(Windows Server 2008 R1の場合)、「簡易メール転送プロトコル(SMTP)」(Windows Server 2008 R2の場合)のスタートアップの種類を「自動」にする。

以上

PHP

2008年12月29日 月曜日

Windows Server 2008 & IIS7.0へのPHPのインストール手順を示します。

  1. ダウンロード
    PHP for WindowsからNon Thread Safeのzipファイルをダウンロードする。

    • PHP5.3以降の場合は、VC9 x86 Non Thread Safe
    • PHP5.2の場合は、VC6 x86 Non Thread Safe

    ※将来x64用などがリリースされたら、環境にあったものをダウンロードする。
    今回は「5.2.10 VC6 x86 Non Thread Safe」のzipファイルをダウンロードした。

  2. ダウンロードしたファイルをインストールしたい任意のフォルダに解凍する。
    ex.) C:¥php52
  3. 以降、「PHP_HOME」と記述する。
    ※C:¥Program Files (x86)の下などにはインストールしない方がよい。PEARのライブラリをインストールするときなどに「Invalid configuration directive」というメッセージが出てうまくいかないから。(このサイトの画面サンプルではそこにインストールしちゃってるけど…)
  4. 設定ファイルの作成
    インストールしたフォルダにある、php.ini-recommendedファイルを、同じフォルダにphp.iniという名でコピーする。
    これがPHPの設定ファイルになる。
  5. PATHを通す
    システム環境変数のPATHにPHP_HOMEを追加する。
    ex.) PATH=.;C:¥Windows¥System32;C:¥php52
  6. 設定ファイルの編集
    (3)で作成したphp.iniファイルに、以下のパラメータを追記する。

    fastcgi.impersonate = 1
    cgi.fix_pathinfo=1
    cgi.force_redirect = 0
    extension_dir = "./ext"
    mbstring.language = Japanese
    mbstring.internal_encoding = UTF-8
    date.timezone = Asia/Tokyo

    以下はのパラメータを環境に応じて設定する。

    SMTP SMTPサーバーの名称またはIPアドレス
    smtp_port SMTPサーバーへの接続ポート番号
    sendmail_from Fromに使用するアドレス

    ex.)

    SMTP = smtp.example.com
    smtp_port = 25
    sendmail_from = me@example.com

    php.iniを変更したらIISを再起動する。

    注)
    SMTPサーバーは、POP before SMTPやSMTP Authなどの認証には対応していない。
    認証が不要なSMTPサーバーがない場合は、それを構築しよう

  7. IISの設定変更
    1. [スタート] - [管理ツール] - [インターネット インフォメーション サービス (IIS) マネージャ]を起動する。
    2. 左側のツリーからコンピュータ名を選択し、「ハンドラ マッピング」をダブルクリックする。
      php-setup01
    3. 右側の操作エリアの「モジュールマップの追加」をクリックする。
      php-setup02
    4. 「モジュールマップの追加」画面で以下を入力する。
      php-setup03

      要求パス *.php
      モジュール FastCgiModule
      実行可能ファイル (オプション) "{PHPをインストールしたフォルダ}¥php-cgi.exe"

      ex.) "C:¥Program Files (x86)¥php52¥php-cgi.exe"

      名前 PHP via FastCGI
    5. 「モジュール マップの追加」メッセージで、「はい」をクリックする。
    6. PHPのハンドラマッピングが追加される。
      php-setup04
    7. 既定のドキュメントにindex.phpを追加する。
      左側ツリーで「コンピュータ名」を選択し、「既定のドキュメント」をダブルクリックする。
      php-setup05
    8. 「既定のドキュメント」画面で、右側の操作エリアの「追加」をクリックする。
      php-setup06
    9. 「既定のドキュメントを追加」画面で、「index.php」と入力する。
    10. 「既定のドキュメント」画面に戻り、index.phpが一覧に追加されていることを確認する。
    11. FastCGIの設定をする。
      左側ツリーで「コンピュータ名を選択肢、「FastCGIの設定」をダブルクリックする。
      php-setup08
    12. 「FastCGI Settings」画面で「~¥php-cgi.exe」をダブルクリックする。
      php-setup09
    13. 「Edit FastCGI Application...」画面で設定をする。
      「ActivityTimeout」がデフォルトで30秒になっており、これだとインストールなどに失敗するアプリケーションもあるので、長めにするとよい。
      php-setup10
  8. 動作確認
    1. C:¥inetpub¥wwwroot¥phpinfo.phpファイルを作成し、以下の一行を記述する。
      <?php phpinfo() ?>
    2. http://localhost/phpinfo.phpにアクセスする。
      php-setup07

      この画面が表示されれば、PHPのインストールは成功。

    3. 作成したphpinfo.phpファイルを削除する。
  9. IISの修正プログラムをあてる。
    このままのIIS7.0では、REQUEST_URIが正しく解釈できないという致命的な不具合がある。
    Microsoftのサポートサイトで配布されている修正プログラムhttp://support.microsoft.com/kb/954946)を適用する。

以上

[2008/08/19] PHP5.3のリリースに伴い、内容を若干修正しました。

IIS

2008年12月29日 月曜日

いろいろなWebアプリケーションをインストールしていくにあたって、まずはそのプラットフォームとなるIISをインストールします。

※OS = Windows Web Server 2008

  1. サーバー マネージャを起動
    [スタート]メニュー - [管理ツール] - [サーバー マネージャ]を選択する。
  2. 役割としてWebサーバーを追加
    役割の概要で「役割の追加」をクリックする。
    iis-install01
  3. 「開始する前に」画面が表示された場合は、「次へ」をクリックする。
  4. 「サーバーの役割の選択」画面で、「Web サーバー(IIS)」にチェックする。
    iis-install02
  5. 「役割の追加ウィザード」画面で、「必要な機能を追加」をクリックする。
  6. 「サーバーの役割の選択」画面に戻ると、「Web サーバー(IIS)」がチェックされているので、「次へ」をクリックする。
  7. 「Web サーバー(IIS)」画面で、「次へ」をクリックする。
  8. 「役割サービスの選択」画面で、「ディレクトリの参照」のチェックを外し、「CGI」「トレース」にチェックをする。
    iis-install03
  9. 「インストール オプションの確認」画面で、「インストール」をクリックする。
  10. 処理完了後、「インストールの結果」画面で内容を確認し、「閉じる」をクリックする。
  11. 「サーバー マネージャ」画面に戻ると、以下のようになっている。
    iis-install04
    これでIISのインストールは完了。
  12. IIS7.0を利用している場合、Administration Pack for IIS 7.0をダウンロードしインストールする。
    ※画面右上の[Install Now or download]ではなく、画面右下のJapaneseをダウンロードすると良い。
    ※IIS7.5を利用している場合は、標準でインストールされている。
  13. Webブラウザでhttp://localhost/にアクセスしてみよう。
    iis-install05

以上

[2009/08/19] Administration Pack for IIS 7.0の日本語版のリリースに伴い、内容を修正しました。