PHPのインストール(Windows Vista編)
Windows
Vista 環境で Apache2.2.x を動かしたので、それに伴いPHP対応としました。
なお、インストール方法の最近の推奨方法が異なってきており、こちらの方が
合理的なため整理しておきました。
■PHP
のインストール
PHPのインストールを以下の手順で行います。
- ま
ずは、こちらか
ら
Windows用のバイナリファイルをダウンロードする。バイナリファイルにはzip形式とmsiインストーラ形式がありますが、今回使用するのはzip
版のほうである。
おやじがダウンロードしたのは、以下のパッケージである。(Apache2.2の場合、PHP4や5.1系列だと本
家のバイナリでは動かないことがあるようなので、注意が必要。)
・
php-5.2.5-Win32.zip
- ダウンロードしたファイルを任意の場所に解凍するが、ここでは
C:\php 配下に解凍する。
◆PHP
の設定
従来、Windows版ApacheでPHPを利用する場合、dllやphp.iniファイルをシステムフォルダ内にコピーしてい
ましたが、これでは管理が面倒なため、以下のように変更します。
- Apache
でPHPを利用するには、php5apache2_2.dll (php5apache.dll
は1.3系用であり、php5apache2.dllは2.0系用なので要注意)へパスが通っていればよいため、従来はパスが
通っているシステムフォルダにコピーしていた
が、dllが存在するフォルダをPATH環境変数に登録する方法とした。
- 「スタート」 -> 「コントロールパネル」
->「
システムとメンテナンス」 ->「
システムの詳細設定」 でシステムのプロパティを開く。
- UACの警告が出るが「続行」を
クリックすると「詳細設定」タブを開くので、「環境変数」をクリック
する。
- システム環境変数欄の中から、「Path」を選択し、「編集」をクリックする。
- 変
数値の最後に ';' を追加し、その後に php5apache2_2.dll が存在するPHP
のディレクトリ(C:\php)
を追加する。
- 「OK」をクリックして設定を保存し、システムを再起動する。(実際は、php.ini
関係の登録があるので、両方の設定が終了してから、保存、再起動すればよい。)
- 続
けて php.ini に関する設定を行う。こちらも従来はシステムフォルダ内にコピーしてい
ましたが、Apache2.x系ならば、httpd.conf で PHPIniDir ディレクティブを使用して php.ini
が存在するフォルダを下記のように指定してあげれば動作する。(ここでは、C:\php 配下に php.ini を置いたものとする。)
PHPIniDir
"C:\php"
も
う一つの方法が、環境変数 PHPRC を指定する方法であり、この方法はApache2.x系以外でも使用できるので、今回はこの方法を使用した。
- スタート -> コントロールパネル ->
システム でシステムのプロパティを開く。
- 詳細設定タブを開き、「環境変数」をクリック
する。
- システム環境変数欄で、「新規」をクリックする。
- 変数名に
「PHPRC」、変数値に php.ini の存在するディレクトリ(C:\php)を入力する。
- 「OK」を
クリックして設定を保存し、システムを再起動する。
- 次に、PHP の設定ファイル(php.ini)
を上記で指定した C:\php
フォルダ内に作成し、設定を行う。この設定ファイルのサンプルが解凍したディレクトリにあるので、このファイルを「php.ini」にリネームして利用す
る。設定
ファイルとしては、php.ini-dist と php.ini-recommended の2種類があるのが、セキュリティを考慮してある
php.ini-recommended を利用すると良い。
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
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です。
Top
Pageへ