PHPのインストール for Windows

PHPは、Perl等と同じように、Webシステムの開発でよく使われるスクリプト言語です。Web黎明期はPerlの方がよく使われたように思いますが、現在はPHPの方が多く使われている印象です。というのも、PHPの方が比較的簡単に覚えられるということと、デフォルトで使える関数や標準ライブラリが充実していることが理由に挙げられるでしょう。
さて、インストールに関してですが、Perlと同様、すでにインストールされている場合もあります。例えば、Mac OS Xをお使いの方や、XAMPPをインストールされた方は、すでにPHPがインストールされていますので、別途インストールする必要はありません。PHPを利用するのにインストールが必要なケースで多いのは、Windows環境でApacheを単体インストールしている場合でしょう。
このページでは、Windows環境でPHPを単体インストールする方法についてご紹介していきます。
まずはPHPをダウンロード
PHPのWindowsバイナリのダウンロードページにアクセスしてください。ここからWindows版のPHPをダウンロードしてくるのですが、いくつか選択肢があります。
VC6 or VC9
画面左にある、「Which version do I choose?」を読むと、普通にapache.orgにあるApacheをインストールした場合は、VC6を。IIS(Windows用のMicrosoft社製Webサーバ)環境ではVC9をダウンロードするとあります。当サイトではApacheを基本に説明していますので、ここではVC6を選択します。
Thread Safe or Non Thread Safe
ここでは詳しく触れませんが(そもそも私自身完全に理解しているとも言えませんが)、モジュール版のPHPはThread Safeがいいようです。まあテスト用サーバで動かすPHPなのでどちらでも大丈夫でしょうが、ここではThread Safe版を選択します。
というわけで、VC6のThread Safeを探すと、執筆時点ではPHP5.2.17の、[ VC6 x86 Thread Safe (2011-Mar-22 13:29:30) ]となります。
インストーラ版もあるのですが、今回試しにそれでインストールをしてみたところ、私の環境ではApacheが起動しなくなってしまったので、Zip版でインストールします。[ Zip ]をクリックして、ダウンロードしてください。
PHPのインストール
ダウンロードしたファイル(ここでは[ php-5.2.17-Win320VC6-x86.zip ])は圧縮されているので、解凍します。解凍すると、以下のようなフォルダが作成されます。
フォルダ名の変更
まず、このフォルダ名を分かりやすく簡単なものに変えるといいでしょう。ここでは、[ php ]と変更しました。ここで他の名前にした方は、この後の文章を適宜読みかえてください。
フォルダの移動
このフォルダを、任意の場所に移動します。ここでは、C:\直下に移動しました(ここに置くのが昔からの慣例のようなので、それに倣っています)。つまりこのフォルダのパスは、C:\phpとなるわけですね。
php.iniの作成
先ほど移動したフォルダの中には、下記のようなファイルがあります。その中の、[ php.ini-dist ]と[ php.ini-recommended ]というファイルを探してください。これらがPHPの設定ファイルの設定例なのですが、[ php.ini-dist ]は主に開発用、[ php.ini-recommended ]は本番運用での設定例です。
テスト用のサーバーですので、どちらでもかまいませんが、ここでは用途通りに、開発用の[ php.ini-dist ]を選択することにしました。[ php.ini-dist ]をコピー&ペースト(複製)して、その複製したファイル名を[ php.ini ]に変更します。
Apacheのhttpd.confの修正
現時点では、ApacheからPHPを認識できていません。そこで、Apacheの設定ファイルであるhttpd.confから、PHPモジュールの読み込みと、PHPの設定ファイル(php.ini)の場所を教えてあげる必要があります。
まずはApacheのhttpd.confを開いてください。私の環境では、デフォルトの場所にインストールしたので、C:\Program Files\Apache Software Foundation\Apache2.2\confにありました。
次に、以下のようなコードを、ファイルのどこか(例えばファイルの最後等)に追記します。
PHPIniDir "[ PHPのフォルダへのパス ]"
[ PHPのフォルダへのパス ]というのは、先ほど解凍したフォルダのパスを指します。例えば今回の場合、C:\直下にphpのフォルダを配置したので、C:\phpですね。
[ PHPのモジュール ]というのは、現在お使いのApacheのバージョンによって異なります。先ほどのphpフォルダの中には、phpのモジュールと呼ばれるファイルが含まれているのですが、どのモジュールを読み込むかは、Apacheのバージョンによって違うのです。それは、以下の通りです。
- Apache2.2系の場合
- php5apache2_2.dll
- Apache2.2以外のApache2系の場合
- php5apache2.dll
- Apache1系の場合
- php5apache.dll
今回は、Apache2.2にインストールするので、下記のようになります。違うバージョンのApacheをお使いの方は、適宜読みかえてください。
PHPIniDir "C:\php"
簡単に言えば、一行目が「C:\php\php5apache2_2.dllにあるPHPのモジュールを読み込んでください。」
二行目が、「PHPの設定ファイルはC:\phpの中にあるphp.iniというファイルを使います」ということです。
拡張子を割り当てる
最後に、特定の拡張子をPHPに割り当てます。先程設定した部分に続けて、下記を記述してください。
これは、拡張子.phpの場合に、PHPとして実行するという意味です。
しかし実際には、拡張子.htmや.htmlでもPHPを動かしたいというケースもあるかもしれません。もし.htmや、.html等でもPHPを使いたい場合は、それらも併記しておきます。半角スペースで区切って指定すればOKです。
ただし.htmや.htmlでもPHPとして処理するので、その分の負荷がかかります(体感できるほどではないと思いますけれど)。ここでは.phpだけにしておき、.htaccessで特定のディレクトリ以下だけ、.htmや.htmlでもPHPを実行できる設定にすることも可能です。
ここで、httpd.confを保存して、Apacheを再起動させて設定を反映させます。
実行してみる
ここまできたら、さっそくPHPを実行してみましょう。
下記のようなコードを記載したファイルを用意します。拡張子は、[ .php ]にして、公開ディレクトリ以下に配置してください。phpinfo();というのは、PHPの情報を出力するおまじない(関数)です。
phpinfo();
?>
そうしたら、ブラウザから(http://~で)アクセスしてみましょう。以下のように、PHPの情報が表示されたら、PHPインストールの完了です。
本番サーバで、phpinfo()に常時アクセスできるようにしない
初心者の方に多いのですが、このphpinfo()を、本番サーバに、誰でもアクセスできる状態で置いたままにしてしまうケースが多く見られます。実際の現場でも、他者が作ったサイトで何度も目にしてきました。
phpinfo()は、サーバの内部情報を表示するので、第三者に見られると非常に危険です。例えるなら、自宅の玄関に、家の仕様や間取り図を貼っているようなものです。本番サーバでは、phpinfo()のファイルを置いたままにしないように気をつけてください。
その他必要に応じてやっておくこと
一度にたくさん設定をいじってしまうと、動かなかったときの問題切り分けがしにくいため、とりあえずPHP動かすところまでを行いました。ですがまだやっておいた方がいいことがあります。全てやってください!とは言いませんが、できれば下記も目を通しておいてください。
パスを通す
これからいろいろなモジュールを使っていったり、コマンドプロンプトからPHPを実行するなどする際に、パスを通しておいた方が便利です。かえってややこしくなるのでここでは詳しく触れませんが、パスを通しておくと、そのパス以下を自動的に探してくれるようになります。
パスの追加は、下記から行います。
- Windows XP
- 「マイコンピュータを右クリック」→「プロパティ」→「詳細設定」→「環境変数」
- Windows Vista, Windows 7
- 「コンピュータを右クリック」→「プロパティ」→「システムの詳細設定」→「詳細設定」→「環境変数」
Windows Vistaでの例
Windows Vistaのケースで設定します。数字の順番にクリックしていってください。
ここは要注意ポイントです。変数値の最後の部分に、追記する形で、[ ;C:\php ]として、OKで保存します。;(セミコロン)を入れ忘れないようにすることと、既存の部分を消してしまわないよう注意してくださいね。心配な方は、編集前の変数値部分をコピーして、テキストファイルなどにとっておくといいかもしれません。
この後は、全てOKにしてウィンドウを閉じ、OSを再起動してください。
OSを再起動したら、コマンドプロンプトを起動します。起動方法は、
「スタートメニュー」→「全てのプログラム」→「アクセサリ」→「コマンドプロンプト」です。
そこで、php -v とコマンドを打って、下記のようにPHPのバージョンが表示されればパスが通っていますので成功です。
php.iniの設定を見直す
php.ini-distを基にして作られたphp.iniですが、ざっと見てみたところ、直しておいた方がいいところが見られました。次の項目をチェックしておくといいでしょう。※設定を変更した後は、Apacheの再起動をお忘れ無く!
ショートオープンタグの無効化
これは、<?というショートタグもPHPとして分析させてしまう設定なので、Offにしておくといいでしょう。なぜなら、XML宣言(<?xml version~)でもPHPとして実行しようとするため、エラーとなってしまうからです。
83行目付近の変更前。
下記のようにします。;(セミコロン)の行はコメントとして扱われます。直接値を変更してもかまいませんが、この方が後でどこを変えたか分かりやすいです。
short_open_tag = Off
エラーレポートのレベル
これは、現時点で全ての人にお勧めする訳ではありません。より厳格なPHPコードを書けるようにするために、エラーの出る条件を高める設定です。開発環境ではバグを無くすため、よくこのような設定が行われます。しかし、少しPHPに慣れてからでも遅くはないので、PHP初心者の方は、ここはまだ変更しなくてもかまいません。一応ご紹介だけ。
305行目付近の変更前
下記のようにします。繰り返しますが、初心者の方はまずはE_ALL & ~E_NOTICEではじめ、少し慣れてきてからE_ALLにしてもいいです。いずれはE_ALLでエラーが出ないコードを書けるようになればいいと思います。
error_reporting = E_ALL
マジッククォートの無効化
これは、'(アポストロフィー)等をデータベース挿入用に自動的にエスケープしてくれる、お節介な機能です。お節介と言えども、これに助けられるケースもあるのでしょうけれど、そもそもそういったコードをWebに公開してしまうことの方が問題です。データベースに挿入する際は、通常データベース固有のエスケープ処理をするので、この機能は不要です。
445行目付近の変更前。
Offにして無効にします。
magic_quotes_gpc = Off
ひとまずこんな感じです。後で気付いたことがあれば、付け足していきます。
エクステンションディレクトリを登録しておく(11/07/07追記)
PHPは、必要に応じて様々なエクステンション(会話の中ではモジュールと言った方が通じるかもしれません)を読み込んで使うことができます。
今回展開したPHPのフォルダの中の、[ext]フォルダの中には、エクステンション一式が含まれているのですが、初期状態ではこれが読み込まれるようになっていません。ですので、エクステンションディレクトリのパスを登録しておきましょう。
php.iniを開いてください。その中で、下記のような場所を探します。私の環境では、491行目にありました。
これを、以下のようにします。C:/php部分は、phpを展開したフォルダのパスに各自読みかえてください。
extension_dir = "C:/php/ext"
Apacheを再起動したら、設定が適用されます。これにより、php.ini内で、任意のエクステンションを読み込むことができるようになります。
コメント
- ゆみママ さん 2011年06月30日12時56分
こんにちは、ゆみママです。 早速PHPをインストールしてみました。 今回は何事もなく、スムーズにインストールできました(^^♪ ありがとうございました!
- 馬場誠 さん 2011年06月30日22時41分
ゆみママさん、こんばんは。 そうおっしゃっていただけると時間をかけて作ったかいがあるというものです。 PHPの学習、楽しんでくださいね!
- 赤木 さん 2011年12月30日18時29分
PHPのインストールが上手くいかないです。 馬場さん、はじめまして。赤木と申します。 PHPを勉強しようと思い御サイトを参考にさせていただいているのですが、PHPのインストールが上手くいかないです。 XAMPP(バージョン 1.7.7)をインストールして #Listen 80 Listen 127.0.0.1:80 を修正・保存してApacheを再起動。 おかげさまでここまでは問題なくできました。 この後、PHP5.2.17をインストールしてApacheのhttpd.confを修正 LoadModule php5_module "C:\php\php5apache2_2.dll" PHPIniDir "C:\php" AddType application/x-httpd-php .php これを行うとApacheを再起動できません。 StartボタンをクリックしてもRunningと一瞬表示されるだけで、Runningになりません。 MySQLは問題なく起動しているのですが。。 Busy... Apache started [port 80] が出ます。 コマンドプロンプトから、 netstat -anoと打って、 TCP 0.0.0.0:80 ~(略 という項目があれば、すでに80番ポートが使用されています。 を試しましたが、TCP 0.0.0.0:80もありませんでした。 httpd.confから LoadModule php5_module "C:\php\php5apache2_2.dll" PHPIniDir "C:\php" AddType application/x-httpd-php .php これを削除するとApacheは起動するのですが… 何が問題なのかここ数日いろいろと試しているのですが全然ダメです。。 なにかアドバイスをいただけたら、嬉しいです。 OSは、WinXP XAMPPはバージョン 1.7.7 •Apache 2.2.21 •MySQL 5.5.16 •PHP 5.3.8 •phpMyAdmin 3.4.5 •FileZilla FTP Server 0.9.39 •Tomcat 7.0.21 (with mod_proxy_ajp as connector) です。よろしくお願いいたします。
- 馬場誠 さん 2011年12月31日14時18分
赤木さん、はじめまして。 まず最初に、お使いのXAMPPにはあらかじめPHP 5.3.8がインストールされていますので、すでにPHPが使えるようになっています。 今回は、別バージョンのPHPをお使いになりたいというような目的でしょうか? ちなみに本ページのPHPのインストールは、単品で新規インストールする場合を想定していたため、XAMPPをお使いの方は、この方法では別バージョンのPHPをインストールすることができません。(というのも、XAMPPでPHPがすでに使えるような設定がされているためです) お休みなので私も試しにやってみましたが、XAMPPで別バージョンのPHPをインストールする場合は、httpd.confではなく、 C:\xampp\apache\conf\extra\ 内の httpd-xampp.conf というファイルを修正します。 httpd-xampp.conf内にすでに LoadModule php5_module ~ PHPIniDir ~ という記載があるので、その部分を今回赤木さんが提示されたように修正して、 LoadFile "C:/xampp/php/php5ts.dll" という部分をコメントアウトしたら、とりあえずPHP5.2.17でPHPを実行できました。 (php5ts.dllは、今回解凍したPHPフォルダにも入っているので、そちらを指定しても動くようです) ただ、httpd-xampp.conf内には、その他XAMPP用のPHPの指定箇所がたくさんあるので、本来はそこも修正したほうが良さそうです。 慣れないうちは難しいと思うので、デフォルトのPHP5.3.8をお使いになる方が無難と言えるかもしれません。
- 赤木 さん 2011年12月31日16時03分
馬場さん、こんにちは赤木です。 大変丁寧なご回答ありがとうございます。解決いたしました。 馬場さんのサイトでも説明されているように、すでにPHPが使えるようになっているのに、よく理解していないままいろいろと勝手にやってまして… おかげさまでPHPの勉強、頑張れそうです。 私も馬場さんのこのサイトみたいな人の役に立つ素敵なサイトを作れるようになりたいです。 ホントありがとうございました。(^-^*)
- 馬場誠 さん 2012年01月01日13時54分
深読みしてしまったようですみません(^^;) 役に立つサイトと言っていただけるのが、サイト運営者としてこの上ない喜びです。 ありがとうございます。 またなにかありましたらお気軽にコメントください☆
- ゆみママ さん 2012年01月11日16時29分
馬場様、こんにちは。 お忙しいところ恐れ入ります。 今ある壁にぶつかっていて、解決方法が見つからず、こちらから投稿いたしました。 ご存じのとおり、私はApache, PHP, MySQL, ActivePerl, phpMyAdminをすべて単体でインストールしました。 ブログはwordpressで作っているのですが、いろいろと試したいことがあって、既存のリモートにあるwordpressを、全ファイルローカル環境にダウンロードしたのですが、うまく動作しません。 ログイン画面はきちんと表示されるので、リモートのアカウントでログインすると、Index of/wp と表示されてwpフォルダに入っているファイルが一覧で表示されてしまいます。 今のローカル環境です。 Windows Vista Apache 2.2.16(win32) PHP 5.2.17 MySQL 5.5.14 phpMyAdmin3.4.5 です。 phpMyAdminでは、「お使いの PHP MySQL ライブラリのバージョン 5.0.51a が MySQL サーバのバージョン 5.5.14 と異なります。」という警告が出ています。。が、特に何も対処せず、そのまま使っています。(って、これがいけないのでしょうか…) PHPの勉強で簡単なプログラムを実行すると、きちんと表示されています。 今これにかかりっきりで、訳が分からなくなっています(汗) どんなことをチェックすればよいでしょうか? アドバイスなどいただけましたら嬉しく思います。 よろしくお願いいたします。
- 馬場誠 さん 2012年01月11日21時08分
ゆみママさん、こんばんは。 状況から推測するに、おそらくはApacheのDirectoryIndexディレクティブの問題のように思われます。 DirectoryIndexとは、ディレクトリ(http://example.jp/wp/等)にアクセスした際に、読み込むファイルの設定です。 一般的にはindex.htmlやindex.htmが設定されていることが多いですね。 Wordpressのトップページ等はindex.phpが読み込まれる必要があるのですが、単品インストールのApacheは、DirectoryIndexにindex.phpが設定されていなかったように思います。 httpd.conf内を DirectoryIndex で検索すれば該当部分が見つかると思いますので、そこにindex.phpを足してみてください。 例えば DirectoryIndex index.htm index.html となっていたら、 DirectoryIndex index.htm index.html index.php のような感じで半角スペースで区切って指定します。 (左に指定する程優先度が高くなります) ちなみに.htaccessでも設定可能ですよ。 余談ですが、ディレクトリにアクセスした際、DirectoryIndexで指定されたファイルが見つからなかった場合は、Apacheの設定によっては今回のようにディレクトリの一覧が表示されます。 ローカルでは問題ありませんが、本番サーバでは、意図的な場合を除き表示しない方がセキュリティ上好ましいです。知っておいた方がいいことですので、詳しくは「Optionsディレクティブ Indexes」などで調べてみてください。 それとMySQLライブラリのバージョンですが、合わせておいた方がいいことは間違いありません。ただ、ローカル環境なので、問題が出た時に対応してもいいかな、とも思います(^^;)
- ゆみママ さん 2012年01月11日22時45分
こんばんは。 ご回答ありがとうございます! httpd.conf内のDirectoryIndexを確認したら、index.htmlのみになっていました。 index.phpを加えて、Apacheを再起動させたらローカルできちんとwordpressが動作するようになりました。 何日もここでハマっていたので、動いたらすごく感動しました!本当にありがとうございました!感謝いたします。 これでスッキリ!やりたいことをガンガン試してみます(^^♪ ディレクトリ制御を検索しました。すごく勉強になったので、自分メモします(*^_^*) MySQLのバージョンの問題はどうやらまだ大丈夫みたいですので、とりあえずこのまま進めてみます(笑)
- 馬場誠 さん 2012年01月12日20時08分
解決して良かったです。 ローカルでWordPressを同様に動かすには、データベースのアカウント作成やコピー等、ちょっと難しいポイントがあったと思います。どんどん成長されていることが伺えますね(^-^)。その調子でがんばってください☆


