PHPのインストール(Apache2.0 Windows編)


Linuxサーバで、WebメールとしてPHPベースのSquirrelMailを 動かすため、PHPをインストールしましたが、ものはついでとWindowsにもインストールしました。これで、Linix/Windows両方で Apache+SSL+PHPの環境ができましたので、いろいろ試験がしやすくなると思います。PHPのインストールに関しては、Linuxで経験済みで したので非常に簡単でした。
おやじは、Windows2000 SP3で確認しています。なお、試験的にSquirrelMailをインストールして基本的な 動作確認をしましたが、問題なく動作しています。つまり、SquirrelMailをWindows環境で動かすことができることが確認できたのですが、 残念ながらWindowsベースのフリーのimapサーバが見つからないので、おやじのLinuxサーバをターゲットに試験しました。

■PHPのインストール

Apache2.0.xx (+SSL)は、既にインストールされてい るものとします。
  1. まずは、Widows用のバイナリファイルをダウンロードします。ところが、本家からダウンロードし ようとしたのですが、PHP4.3.2にはprintf/sprintf/vprintf/vsprintf関数に問題があるとのことなので、対策済みの バイナリをこちらからダウンロードし ます。おやじがダウンロードしたのは、php4-win32-STABLE-200306280830.zipです。

  2. ダウンロードしたファイルを任意の場所に解凍しますが、ここではINSTALL.txtに書かれている C:\PHP 配下に解凍しました。

  3. 解凍した C:\PHP\php4ts.dll をシステムディレクトリ(C:\WINNT\system32)にコピーします。

■PHPの設定

PHPの設定は、C:\PHP\php.ini-distを C:\WINNT配下にコピーし、「php.ini」というファイル名に変更してこの内容を修正します。
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 php4_module C:/PHP/sapi/php4apache2.dll
AddType application/x-httpd-php .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.0.46 (Win32) mod_ssl/2.0.46 OpenSSL/0.97b PHP/4.3.3RC2-dev」のようにPHPのバージョンが表示されていれば、OKです。

  <?php phpinfo(); ?>


 

Top Pageへ