WindowsXpパソコンでApacheとPHPのインストールメモ

 2011年7月18日海の日なのにこんなの書いてる。
 自宅サーバーはWindowsXpにApaheでPHP、CGIを使えるようにしてある。他のパソコンでそれと同じ環境になるようにして、ホームページを更新したりする。インストールのやり方をメモしておかないと少し時間が経つと年のせいかきれいさっぱり忘れてしまうので、また調べなおしたりして手間がかかる。メモを残しておく方が手間が少なくて済む。

 Apache2のインストール
 ApacheとはWindows上でも動作するフリーのWEBサーバー。自宅PCでPHP動作を確認することができる。
  http://httpd.apache.org/download.cgi のページを開き、
•Win32 Binary without crypto (no mod_ssl) (MSI Installer): httpd-2.2.17-win32-x86-no_ssl.msi
を選択しダウンロード(ファイル名の2.2.17の部分は最新のバージョン)。

ダウンロードした「httpd-2.2.17-win32-x86-no_ssl.msi 」をダブルクリックしインストーラーを起動。そして、インストーラの指示に従いインストール。
Network Domain、Server Nameはlocalhostとする。
①インストール開始
「Next >」をクリック
②ライセンスに同意
「I accept the terms int the license agreement」を選択し
「Next >」をクリック
③Apacheの説明
「Next >」をクリック
④サーバ情報
Network Domain
(サーバのドメイン名) localhost
Server Name
(wwwサーバ名) localhost
Administrator's Email Address
(管理者のメールアドレス) aaa@bbb.com
を設定し、「for All Users, on Port80, as a Service」を選択し、
「Next >」をクリック
⑤セットアップのタイプ選択
「Typical」を選択し、「Next >」をクリック
⑥インストールするディレクトリ
デフォルトの
C:\Program Files\Apache Software Foundation\Apache2.2\
のままで、「Next >」をクリック
(変更したい場合はChangeボタンから行います。)
⑦インストール開始
「Install」をクリック
⑧インストール終了
「Finish」をクリック
インストールが完了したら右下のタスクトレイに「Apache Service Monitor」が表示される。緑色に点灯していることを確認。
もし以下のように緑色じゃなくて赤色で点灯してる場合
このアイコンをダブルクリック(または右クリックからOpen Apache Monitorを選択)。
Apache Service Monitorが表示されるので、「Start」ボタンをクリックしてApacheサービスを起動。
Apacheのインストールが終わったら、http://localhost/ にアクセスしてちゃんと表示できているか確認。
Apacheのインストールが終わったら次にPHPのインストール。
PHPのインストール
http://www.php.net/downloads.php
より最新版のPHPをダウンロード。最新版PHPの「 WindowsBinaries 」にある
http://windows.php.net/download/
と書いてあるリンクをクリック(現時点でVC6は5.2.17)。
サーバにApacheを利用するので、
VC6 x86 Thread Safe (2011-Mar-22 13:29:30)
■Zip [10.06MB]
を選択。
Cドライブ内にphpというフォルダを作り「 c:\php 」ディレクトリ内にダウンロードしたZIPファイルを解凍。
ディレクトリ内にある「 php5ts.dll 」ファイルをC:\WINDOWSディレクトリ内のsystem32ディレクトリにコピー。
次に、「 php.ini-dist 」ファイルをWINDOWSディレクトリにコピーした上でphp.ini-distファイルの名前を「 php.ini 」に変更。
httpd.conf の設定 次にPHPの設定を行う。
c:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf
をメモ帳やエディタで開く。
LoadModuleの項に次の行を追加。これでApache2にPHPモジュールを適用。
(Apache2.2.*をインストールしたためphp5apache2_2.dllを使う。)
LoadModule php5_module c:/php/php5apache2_2.dll
AddTypeの項の最後に次の行を追加し、Apache2にphpのファイル形式を定義。
AddType application/x-httpd-php .php
php.ini の設定
次に、c:\WINDOWSディレクトリ内にあるphp.iniをメモ帳などで開き
doc_root = を次のように追加して修正。
doc_root = "c:/Program Files/Apache Software Foundation/Apache2.2/htdocs"
さらに、次の行を変更。
「"./"」を「"c:/php/ext"」に変更。
(変更前)
extension_dir = "./"
(変更後)
extension_dir = "c:/php/ext"
環境変数の追加  PHPをインストールしたディレクトリを環境変数に追加。
[WindowsXPの場合]
「マイコンピュータ」を右クリックし「プロパティ」をクリック、「詳細設定」タブから「環境変数」をクリック。
環境変数ダイアログが表示。
下段にある「システム環境変数」一覧から、変数名「Path」を選択し「編集」をクリック。システム変数の編集ダイアログが表示される。
「変数値」には既に値が入力されている。既にある入力値は消さないように注意。変数値の最後にPHPをインストールしたディレクトリを追加。環境変数はセミコロン「;」で区切られので、変数値の最後にセミコロンがない場合は「;c:\php」を最後に追加。
Apacheの再起動
これらの設定が終わったらApache2を再起動して設定を有効にする(httpd.confやphp.iniなどの初期設定を変更した場合はApacheの再起動を行なう)。 
タスクトレイにある「Apache Services」を右クリックして、「Open Apache Monitor」を選択。
Apache Service Monitorが起動。 Restartをクリックして再起動。
PHPの動作確認
設定が終了したらPHPの動作確認をする。エディタなどに以下のスクリプトを入力。
ファイルを
C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\info.php
内に保存。ファイル名をinfo.phpなどと拡張子を.phpにする。そしてブラウザから http://localhost/info.php にアクセスしてversion情報がちゃんと表示されるか確認。
<?php
phpinfo();
?>
Mbstringを有効に
http://www.aconus.com/~oyaji/www/apache_win_php.htm
■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/ext"
extension=php_mbstring.dll
session.save_path = c:/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の設定の概要は、以下。
a.output_buffering = Off :一般的に出力バッファリング制御をチャント実行しているとは思えないので、ここはOffを指定。
b.;output_handler = :出力の変換をする場合は変換を有効にするためにmb_output_handlerを指定するが、無変換なので無効のままとする。
c.default_charset = "" : PHPがContent-type:ヘッダでcharacter encodingを出力するコードを指定するが、コードはソフトに依存するのでcharsetの送信を無効(空)にし透過させる。
d.extension_dir = "c:/php/ext"へのパスを指定
e.extension=php_mbstring.dll:extension は全てコメントアウトされているので、必要に応じてアンコメントアウト(行頭の「 ; 」を削除)する。
f.session.save_path = c:/temp :セッションのデータが保存されるディレクトリ。デフォルトはインストールパーティションの/tempなので、C:\tempになるが、Cには通常はないので、tempディレクトリを作成する。フラグメントを避けるためスワップとtempファイルはそれぞれ別の専用パーティションにしてあるので、そこを指定。
g.mbstring.language = Japanese : mbstringで使用される言語のデフォルト値
h.mbstring.internal_encoding = EUC-JP : 内部文字エンコーディングのデフォルト値
i.mbstring.http_input = pass : HTTP入力文字エンコーディングを指定するが、透過なので「pass」とする。
j.mbstring.http_output = pass : HTTP出力文字エンコーディングを指定するが、透過なので「pass」とする。
k.mbstring.encoding_translation = Off : HTTP入力文字エンコーディング検出および内部文字エンコーディングへの変換用であるが、無変換なので「Off」とする。
l.mbstring.detect_order = EUC-JP,SJIS,JIS,UTF-8,ASCII : 文字コードの検出順序でありデフォルトはauto。但し、autoの検出順序がASCII, JIS, UTF-8, EUC-JP, SJISのため誤検出するようなので、順序を入れ替え指定。
m.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>
全てのPHPコードをHTMLのように作成するため次の文をhttpd.conf内の400行目あたりのこういうことが書いてあるところに書き足す。
AddType application/x-httpd-php .htm .html
基本.htaccessは使わないので、
まあ、検索か置換でAllowOverrideと書いてあるところを探し、、
AllowOverride None
にする。
最終更新:2011年10月21日 00:57