PHPのインストール(Windows Vista編)


Windows Vista 環境で Apache2.2.x を動かしたので、それに伴いPHP対応としました。 なお、インストール方法の最近の推奨方法が異なってきており、こちらの方が 合理的なため整理しておきました。

■PHP のインストール

PHPのインストールを以下の手順で行います。
  1. ま ずは、こちらか ら Windows用のバイナリファイルをダウンロードする。バイナリファイルにはzip形式とmsiインストーラ形式がありますが、今回使用するのはzip 版のほうである。
    おやじがダウンロードしたのは、以下のパッケージである。(Apache2.2の場合、PHP4や5.1系列だと本 家のバイナリでは動かないことがあるようなので、注意が必要。)

     ・ php-5.2.5-Win32.zip

  2. ダウンロードしたファイルを任意の場所に解凍するが、ここでは C:\php 配下に解凍する。

◆PHP の設定

従来、Windows版ApacheでPHPを利用する場合、dllやphp.iniファイルをシステムフォルダ内にコピーしてい ましたが、これでは管理が面倒なため、以下のように変更します。
  1. Apache でPHPを利用するには、php5apache2_2.dll (php5apache.dll は1.3系用であり、php5apache2.dllは2.0系用なので要注意)へパスが通っていればよいため、従来はパスが 通っているシステムフォルダにコピーしていた が、dllが存在するフォルダをPATH環境変数に登録する方法とした。

    1. 「スタート」 -> 「コントロールパネル」 ->「 システムとメンテナンス」 ->「 システムの詳細設定」 でシステムのプロパティを開く。
    2. UACの警告が出るが「続行」を クリックすると「詳細設定」タブを開くので、「環境変数」をクリック する。
    3. システム環境変数欄の中から、「Path」を選択し、「編集」をクリックする。
    4. 変 数値の最後に ';' を追加し、その後に php5apache2_2.dll が存在するPHP のディレクトリ(C:\php) を追加する。
    5. 「OK」をクリックして設定を保存し、システムを再起動する。(実際は、php.ini 関係の登録があるので、両方の設定が終了してから、保存、再起動すればよい。)


  2. 続 けて php.ini に関する設定を行う。こちらも従来はシステムフォルダ内にコピーしてい ましたが、Apache2.x系ならば、httpd.conf で PHPIniDir ディレクティブを使用して php.ini が存在するフォルダを下記のように指定してあげれば動作する。(ここでは、C:\php 配下に php.ini を置いたものとする。)

     PHPIniDir "C:\php"

    も う一つの方法が、環境変数 PHPRC を指定する方法であり、この方法はApache2.x系以外でも使用できるので、今回はこの方法を使用した。

    1. スタート -> コントロールパネル -> システム でシステムのプロパティを開く。
    2. 詳細設定タブを開き、「環境変数」をクリック する。
    3. システム環境変数欄で、「新規」をクリックする。
    4. 変数名に 「PHPRC」、変数値に php.ini の存在するディレクトリ(C:\php)を入力する。
    5. 「OK」を クリックして設定を保存し、システムを再起動する。


  3. 次に、PHP の設定ファイル(php.ini) を上記で指定した C:\php フォルダ内に作成し、設定を行う。この設定ファイルのサンプルが解凍したディレクトリにあるので、このファイルを「php.ini」にリネームして利用す る。設定 ファイルとしては、php.ini-dist と php.ini-recommended の2種類があるのが、セキュリティを考慮してある php.ini-recommended を利用すると良い。
    PHPの設定は結構厄介で、設定を誤ると文字化けに悩まされることになります。いろいろなサイトにphp.iniも 設定例が載っていますが、おやじが得た設定に関する結論は以下のとおりです。


    ここでは、設定変更したところを中心に記載します。

      output_buffering = Off
      ;output_handler = 
      default_charset = ""
     extension_dir = "c:\PHP\extensions\"
     extension=php_mbstring.dll
     session.save_path = f:/temp
      [mbstring]
      mbstring.language = Japanese
      mbstring.internal_encoding = EUC-JP
      mbstring.http_input = pass
      mbstring.http_output = pass
      mbstring.encoding_translation = Off
      mbstring.detect_order = 
    EUC-JP,SJIS,JIS,UTF-8,ASCII
      mbstring.substitute_character = none;


    php.iniの設定の概要は、以下のとおりです。

    1. output_buffering = Off :一般的に出力バッファリン グ制御をチャント実行しているとは思えませんので、ここはOffを指定。
    2. ;output_handler =  : 出力の変換をする場合は変換を有効にするためにmb_output_handlerを指定するが、無変換なので無効のままと する。
    3. default_charset = "" : ここでは、PHPがContent-type:ヘッダでcharacter encodingを出力するコードを指定するが、コードはソフ トに依存するのでcharsetの送信を無効(空)にし透過させる。
    4. extension_dir = "c:\PHP\extensions\":PHP Extensionへのパスを指定
    5. extension=php_mbstring.dll:extension は全てコメントアウトされているので、必要に応じてアンコメントアウト(行頭の「 ; 」を削除)する。
    6. session.save_path = f:/temp : セッションのデータが保存されるディレクトリ。デフォルトはインストールパーティションの/tempなので、C:\tempになるが、Cには通常はないの で、tempディレクトリを作成する。おやじは、フラグメントを避けるためスワップとtempファイルはそれぞれ別の専用パーティションにしてあるので、 そこを指定。
    7. mbstring.language = Japanese : mbstringで使用される言語のデフォルト値
    8. mbstring.internal_encoding = EUC-JP : 内部文字エンコーディングのデフォルト値
    9. mbstring.http_input = pass : HTTP入力文字エンコーディングを指定するが、透過なので「pass」とする。
    10. mbstring.http_output = pass : HTTP出力文字エンコーディングを指定するが、透過なので「pass」とする。
    11. mbstring.encoding_translation = Off : HTTP入力文字エンコーディング検出および内部文字エンコーディングへの変換用であるが、無変換なので「Off」とする。
    12. mbstring.detect_order = EUC-JP,SJIS,JIS,UTF-8,ASCII : 文字コードの検出順序でありデフォルトはauto。但し、autoの検出順序がASCII, JIS, UTF-8, EUC-JP, SJISのため誤検出するようなので、順序を入れ替え指定。
    13. mbstring.substitute_character = none; : 無効な文字を代替する文字

    なお、PHPはEUC-JPで記述されているが、HTTP出力では Shift_JISで出力されるような場合は、そのアプリだけ .htaccess で指定してあげればよい。PHPがEUC-JPで出力がShift_JISの場合の.htaccessの記述例を下記に示します。 なお、. htaccessで記述する場合は、下記が参考になるでしょう。

    http://www.shigeweb.jp/php/project_p/?section=setup&page=htaccess
    <IfModule mod_php5.c>
        # 文字エンコーディングを指定したエンコーディングに変換。
        # output_handler で "mb_output_handler" 指定時は、自動で output_buffering On
        # となるので、output_bufferingは省略可。
     #    php_flag output_buffering On
        php_value output_handler "mb_output_handler"

        # PHPの記述コード系(ex. EUC-JP)を指定。
        php_value mbstring.internal_encoding "EUC-JP"

        # HTTPの出力コード系(ex. SJIS)を指定。
        php_value mbstring.http_output "SJIS"
    </IfModule>

◆Apache のPHP関連の設定

ここで、ApacheのPHP関係の設定を行います。httpd.confを開き、下記のようにPHP関係の設定(赤字部分。phpへのパスは、当然インストール環境に合わせるこ と。)をします。
DirectoryIndexにindex.phpも追加しておきます。なお、inde.htmは、おやじが基本で .htm を使用しているため追加しています。
設定が完了したらApacheを再起動しておきます。

LoadModule php5_module "C:\php\php5apache2_2.dll"
AddType application/x-httpd-php .php

# php.iniのパスを環境変数指定で行わない場合
#PHPIniDir "C:\php"

DirectoryIndex index.html index.htm index.html.var index.php


◆PHPの動作確認

ここで、PHPが正常に動作しているか確認しておきます。下記のように適当な名前のphpファイル(tst.php)を作成し Documentrootに置き、ブラウザで http://www.aconus.com/test.php とアクセスすると、PHPが使えるようになっていればサーバのPHP関係の情報が表示されます。
なお、タスクトレイのApacheアイコンからApache Monitorを右クリックで開くと、モニタ画面の一番下に「Apache/2.2.6 (Win32) mod_ssl/2.2.6 OpenSSL/0.9.8e PHP/5.2.5」のようにPHPのバージョンが表示されていれば、OKです。

  <?php phpinfo(); ?>




Top Pageへ