Windows7にApache2.2とPHP5.3とMySQL5.1をインストール
ローカルのPCに、Web用の開発環境を入れた時の覚え書きです。
ちまちまとつまずいて、一週間かかりました…。
■環境
OS: Windows7
Webサーバ: Apache2.2.14
プログラム言語: PHP5.3.1
データベース: MySQL5.1.41
それぞれ、現時点(2009年12月)で最新のバージョンを選んでみました。
PCには以前のバージョンの物など一切入っていない状態です。
xampp等は使わずに、一個ずつ入れていきます。
■手順
1.Apache2.2.14
1-1.インストール
1-2.動作確認
2.PHP5.3.1
2-1.インストール
2-2.動作確認
3.MySQL5.1.41
3-1.インストール
3-2.動作確認
とりあえず動くところまで。
細かい設定(文字コード、セキュリティ等)は省いています。
以下は成功したときの手順です。実際には何度も失敗しては戻ってやり直してます。
1.Apache2.2.14
1-1.Apache2.2.14をインストール
ダウンロード元URL: http://httpd.apache.org/download.cgi
インストーラ: apache_2.2.14-win32-x86-openssl-0.9.8k.msi
上記をダウンロード。
実行するとウィザードが開くので、基本的にはデフォルトのまま従って進んできますが、
以下の赤字の部分だけ、手で入力もしくはチェックしました。
Network Domain: localhost
Server Name: localhost
Administrator's Email: 適当なメールアドレス
for All Users, on Port 80 にチェック
Typical にチェック
インストールする場所を、デフォルトの
C:\Program Files\Apache Service Foundation\Apache2.2\
から
C:\Apache2.2\
へ書き換え。
理由は、Program Filesフォルダ以下だと、ファイルを移動したり書き換えたりしようとする度に
Windows7のユーザーアカウント制御(UAE)にいちいち引っ掛かって面倒だから。
同じ理由で、他のインストールもC:\直下にしていきます。
1-2.Apache2.2.14の動作確認
ウィザードが完了したら、
へアクセス。
画面に「It works!」と表示されたら成功。
ローカルPCがWebサーバとなって、 C:\Apache2.2\htdocs\index.html が表示されている状態です。
2.PHP5.3.1
2-1.PHP5.3.1をインストール
ダウンロード元URL: http://windows.php.net/download/
インストールファイル: php-5.3.1-Win32-VC6-x86.zip
上記をダウンロードして解凍。
それとは別に、C:\の直下に「PHP」というフォルダを作っとく。
解凍してできた「php-5.3.1-Win32-VC6-x86」フォルダの中身を、
今作った、 C:\PHP フォルダの中に全て入れます。
それから、PHPの設定ファイルであるphp.iniを作ります。
C:\PHP\php.ini-developmentをコピーして、同じ場所にphp.iniの名前で保存し、
以下の赤字の部分を書き加えました。
ファイル: C:\PHP\php.ini
(略)
; On windows:
; extension_dir = "ext"
extension_dir = "C:\PHP\ext"
(略)
extension=php_mysql.dll
extension=php_mysqli.dll
(略)
下の二行は、文頭のコメントアウト部分「;」を外しただけ。
次に、Apacheの設定ファイルであるhttpd.confを、PHPを読み込むように書き換えます。
以下の赤字の部分を書き加えました。
ファイル: C:\Apache2.2\conf\httpd.conf
(略)
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
(略)
PHPIniDir "C:\PHP"
LoadModule php5_module "C:\PHP\php5apache2_2.dll"
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
下の四行はファイルの末尾に付け加えました。
以上の2ファイルを書き換えて保存したら、Apacheを再起動します。
Apacheの操作は、Windows画面のタスクバー右下に常駐しているApacheのアイコンから。
Apache2.2→Restartで再起動できます。
ちなみに、PHPIniDirを書くとエラーになる(Apacheが起動失敗する)ことがありました。
その時はこの行だけ書かずに、php.iniファイルをC:\Windows\の中に放り込んだら動きました。
原因はわかりません…いつの間にか再現しなくなってたので。適当。
2-2.PHP5.3.1の動作確認
無事にApacheを再起動できたら、テスト用のPHPファイルを作ってみます。
中身は以下のように書きます。
ファイル: C:\Apache2.2\htdocs\info.php ←新しく作る
<?php
phpinfo();
?>
そしてこのファイルにアクセスしてみます。
青っぽい表がずらーっとある、phpinfoの画面が表示されたら成功。
3.MySQL5.1.41
3-1.MySQL5.1.41をインストール
ダウンロード元URL: http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.41-win32.msi/from/pick#mirrors
インストーラ: mysql-5.1.41-win32.msi
上記をダウンロード。
ここで一旦、Windowsのファイアウォールを一時的に止めておく必要があります。
インストール時に引っ掛かるから。
まずPCのネットワーク接続を切断します。
次に、Windowsより
コントロールパネル→システムとセキュリティ→Windowsファイアウォール
→Windowsファイアウォールの有効化または無効化
から、 ファイアウォールをプライベート・パブリック共に無効にします。
それから、さっきダウンロードしてきたmysql-5.1.41-win32.msiを実行します。
ウィザードが開くので、基本的にはデフォルトのまま従って進んできますが、
以下の赤字の部分だけ、手で入力もしくはチェックしました。
Setup type: Custom を選択
Custom Setup
MySQL Server
Install to: Change をクリックして、
C:\MySQL\ を入力
MySQL Server Datafiles
Install to: Chanfe をクリックして、
C:\MySQL\ を入力
Enable TCP/IP Networking
Add firewall exception for this point にチェック(Windowsのファイアウォールを通す)。
Include Bin Directory in Windows PATH にチェック(パスを通しておく)。
Modify Security Settings rootのパスワードを決めて入力。
ウィザードが完了したら、Windowsファイアウォールを有効に戻しておきます。
ネットワークも接続しなおします。
もし一度MySQLのインストールに失敗していたら、インストールし直す前に、
MySQLを一旦アンインストールして、残ったフォルダも全て消してください。
ポートの設定が残っていても失敗するので、Windowsの
コントロールパネル→システムとセキュリティ→Windowsファイアウォール
→Windowsファイアウォールを介したプログラムまたは機能を許可する
より、「MySQL Server」を選んで削除をクリックしてください。
3-2.MySQL5.1.41の動作確認
Windowsより、
すべてのプログラム→アクセサリ→コマンドプロンプト
を立ち上げて、
mysql -u root -p
を入力→[Enter]→rootのパスワードを入力すると、プロンプト画面に
「Welcome to the MySQL…」と表示されて、MySQLが使えるようになってたら成功。
また、
すべてのプログラム→MySQL→MySQL Server 5.1→MySQL Command Line Client
を立ち上げても同様。
次に、PHPからMySQLを呼び出せる設定になっていることを確認します。
一度Apacheを再起動します。
2-2で作ったphpinfo↓にアクセスしてみて、mysqlの表示があればOKです。
最後に、接続のテストをしてみます。
テスト用に新しいPHPファイルを作ります。
ファイル: C:\Apache2.2\htdocs\test.php ←新しく作る
<?php
$dbh = mysql_connect('127.0.0.1', 'root', 'rootのパスワード');
$rslt = mysql_query("show databases");
while ($row = mysql_fetch_array($rslt)) {
print $row[0].", ";
}
?>
ホストを指定する部分の'127.0.0.1'を、'localhost'と書くと失敗します。これはhttpd.conf等でも同じです。
このtest.phpでやると、タイムアウトエラーになります。もうイヤ。
そしてこのファイルにアクセスしてみます。
「information_schema, mysql, test, 」と表示されたら成功。
これでApacheとPHPとMySQLが繋がって動くようになりました。
おつかれさまでした!
■あとがき
これだけだと文字化けやらセキュリティの不安やらで不十分なので、
後は想定するサーバや書籍等をご参考に、詳しい設定をしていってください。
初心者向けPHP+MySQLの本が沢山出てますが、入り口はどれでもいいんじゃないでしょうか。
OSや各バージョンの違いといった環境別、組み合わせ別の情報は、ネットが頼りだったりします。
書面の限られたスペースでは、対象とする環境を絞って解説されていることが多いからです。
特にインストール時のトラブルや出たばかりのバージョンについては手探りになりがちなので、
少しでも情報の足しになればと、この記事を書いてみました。