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のインストール
- まずは、Widows用のバイナリファイルをダウンロードします。ところが、本家からダウンロードし
ようとしたのですが、PHP4.3.2にはprintf/sprintf/vprintf/vsprintf関数に問題があるとのことなので、対策済みの
バイナリをこちらからダウンロードし
ます。おやじがダウンロードしたのは、php4-win32-STABLE-200306280830.zipです。
- ダウンロードしたファイルを任意の場所に解凍しますが、ここではINSTALL.txtに書かれている
C:\PHP 配下に解凍しました。
- 解凍した
C:\PHP\php4ts.dll をシステムディレクトリ(C:\WINNT\system32)にコピーします。
■PHPの設定
PHPの設定は、C:\PHP\php.ini-distを
C:\WINNT配下にコピーし、「php.ini」というファイル名に変更してこの内容を修正します。
PHPの設定は結構厄介で、設定を誤ると文字化けに悩まされることになります。いろいろなサイトにphp.iniも
設定例が載っていますが、おやじが得た設定に関する結論は以下のとおりです。
- 一
般的にPHPの記述コードとHTTP出力のコードは一致しているため、透過・無変換を基本とする。
→
この設定なら、例えば、phpMyAdminはUTF-8で自作PHPはEUC-JPといった具合に、システムに
複数のコード系が混在しても文字化けすることは無い。 - 上記の条件に合わないアプリ(PHPの記述コードが
EUC-JPでHTTP出力のコードがShift_JIS等)は、当該アプリだけ「.htaccess」で個別の変換を行うとよい。
→ SmartyなどはEUC-JPが前提のためHTTP出力をShift_JISにしたりすると文字化け問題が発生するが、それはソフトのコー
ディーングの問題なので、個別に対処すべき話。
ここでは、設定変更したところを中心に記載します。
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の設定の概要は、以下のとおりです。
- output_buffering = Off
:一般的に出力バッファリン
グ制御をチャント実行しているとは思えませんので、ここはOffを指定。
- ;output_handler
= :
出力の変換をする場合は変換を有効にするためにmb_output_handlerを指定するが、無変換なので無効のままと
する。
- default_charset
= "" : ここでは、PHPがContent-type:ヘッダでcharacter
encodingを出力するコードを指定するが、コードはソフ
トに依存するのでcharsetの送信を無効(空)にし透過させる。
- extension_dir = "c:\PHP\extensions\":PHP
Extensionへのパスを指定
- extension=php_mbstring.dll:extension
は全てコメントアウトされているので、必要に応じてアンコメントアウト(行頭の「 ; 」を削除)する。
- session.save_path
= f:/temp :
セッションのデータが保存されるディレクトリ。デフォルトはインストールパーティションの/tempなので、C:\tempになるが、Cには通常はないの
で、tempディレクトリを作成する。おやじは、フラグメントを避けるためスワップとtempファイルはそれぞれ別の専用パーティションにしてあるので、
そこを指定。
- mbstring.language = Japanese :
mbstringで使用される言語のデフォルト値
- mbstring.internal_encoding
= EUC-JP : 内部文字エンコーディングのデフォルト値
- mbstring.http_input
= pass : HTTP入力文字エンコーディングを指定するが、透過なので「pass」とする。
- mbstring.http_output
= pass : HTTP出力文字エンコーディングを指定するが、透過なので「pass」とする。
- mbstring.encoding_translation
= Off : HTTP入力文字エンコーディング検出および内部文字エンコーディングへの変換用であるが、無変換なので「Off」とする。
- mbstring.detect_order
= EUC-JP,SJIS,JIS,UTF-8,ASCII : 文字コードの検出順序でありデフォルトはauto。但し、autoの検出順序がASCII, JIS,
UTF-8, EUC-JP, SJISのため誤検出するようなので、順序を入れ替え指定。
- 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です。
Top
Pageへ