はじめに

Windows上にPHP5とPostgreSQL8.0をインストールして、学習環境を構築する手順を説明します。
次のバージョンのソフトウェアで環境を作ります。

  • WindowsXP Service Pack 2
  • Apache 2.0
  • PHP 5.0
  • PostgreSQL 8.0

install.txtによると、Apache2とPHPの組み合わせは推奨されていないそうですが、本番環境ではないのであえて無視して最新で行くことにします。

PHPのインストール

PHPのインストール

PHPのダウンロードページからPHPのzipアーカイブを入手します。2005/01/01時点ではphp-5.0.3-Win32.zipが最新でした。

インストールディレクトリを作り、アーカイブを展開します。ここでは"C:\php"にインストールします。
install.txtには、PHPをインストールするパスにスペースが入っていると(たとえば"C:\Program Files\php"など)、web serverがクラッシュすることがある、との記述があるので、インストールするディレクトリには注意してください。

C:>C:C:>cd \C:>mkdir phpC:>cd phpC:>unzip php-5.0.3-Win32.zip

PHPの設定

設定ファイルをコピーします。php.ini-distを雛形として使用します。

C:>copy C:\php\php.ini-dist C:\php\php.ini

php.iniを編集してPHPの設定をします。

...extension_dir = "C:/php/ext/" <- 変更...extension=php_mbstring.dll <- コメントをはずす(570行周辺)...extension=php_pgsql.dll <- コメントをはずす(580行周辺)...mbstring.language = Japanese <- 変更(1109行周辺)...mbstring.http_output = pass <- 変更(1112行周辺)...mbstring.internal_encoding = EUC-JP <- 変更(1114行周辺)...mbstring.http_input = auto <- 変更(1117行周辺)...mbstring.encoding_translation = On <- 変更(1118行周辺)...mbstring.detect_order = auto <- 変更(1132行周辺)...mbstring.substitute_character = none <- 変更(1136行周辺)...mbstring.func_overload = 0 <- 変更(1146行周辺)

Pathに"C:\php"を追加しておきます。

コマンドラインの確認

コマンドラインでPHPが実行できることを確認しておきます。

C:>php -vPHP 5.0.3 (cli) (built: Dec 15 2004 08:07:57)Copyright (c) 1997-2004 The PHP GroupZend Engine v2.0.3, Copyright (c) 1998-2004 Zend TechnologiesC:>

apacheのインストール

apacheのインストール

apacheのダウンロードページから最新版Apacheを入手します。2005/01/02時点では2.0.52が最新でした。

入手したファイルを実行します。

Installation Wizard

Installation Wizardが起動します。"Next"をクリックします。

Apache Licence

Apache Licenceの画面ではライセンス条項を確認したうえ、"I accept the terms in the licence agreement"をチェックして、"Next"をクリックします。

Read This First

"Read This First"では、文章を一読し、"Next"をクリックします。

Server Information

"Server Information"では、このサーバーの情報を入力します。この環境はローカルのテスト環境のため、"Network Domain"には"localnet"を入力、"Administrator's Email Address"には、"administrator@localhost"を入力しています。

Setup Type

"Setup type"には"Typical"を選択します。

Destination Folder

"Destination Folder"は変更せず、"Next"をクリックします。

Destination Folder

インストールに必要な情報の入力が完了しました。"Ready to Install the Program"で、"Install"をクリックします。

Destination Folder

WindowsXP SP2が適用されている場合、"Windowsセキュリティ重要な警告"が表示されることがあります。"ブロックを解除します"をクリックします。

Installation Wizard Complete

"Installation Wizard Complete"の画面が表示されたら、"Finish"をクリックします。

Apacheインストール時のテストページ

"http://localhost/"にアクセスして、Apacheのテストページが表示されることを確認します。

apacheの設定

PHPをapacheに組み込んで使えるように、apacheを構成します。
  "スタート" -> "プログラム"
    -> "Apache HTTP Server 2.0.52"(バージョンによる)
     ->"Configure Apache Server"
      ->"Edit the Apache httpd.conf Configuration File"
を選択します。

...LoadModule php5_module "C:/php/php5apache2.dll"<-追加(172行周辺)...AddDefaultCharset EUC-JP<-変更(702行周辺)...AddType application/x-httpd-php .php <-追加(768行周辺)...PHPIniDir "C:/php" <-追加(最終行)

ユーザー用のhtmlファイルを置くフォルダは、デフォルトが"My Document\My Website"という設定になっているので、作成しておきます。

Apache Service Monitor

タスクバーのapacheアイコンをダブルクリックしてApache Service Monitorを起動し、apacheを再起動します。

"My Website"に、次のような内容のファイルを、phpinfo.phpという名前で作成します。

<?php phpinfo() ?>
PHPinfo()

"http://localhost/~ユーザー名/phpinfo.php"にアクセスして、PHPの構成情報が表示されることを確認します。

PostgreSQLのインストール

ダウンロードページから最新版PostgreSQL8.0を入手します。2005/01/02時点ではpostgresql-8.0.0-rc2-2-ja.zipが最新でした。

なお、cygwinがインストールされていて、Pathにcygwinのディレクトリが入っていると、インストールで警告が出ます。英語版のrc2では出なかったようですが、日本語版のrc2では出るようです。インストール前にcygwinのディレクトリをPathからはずしておいたほうがよいでしょう。

入手したファイルを解凍し、実行します。

PostgreSQLインストールウィザード

"次へ"をクリックします。

インストールの注意事項

インストールの注意事項に目を通し、"次へ"をクリックします。

インストールオプション

開発環境ですので、すべてを選択します。現在位置は変更せず、"次へ"をクリックします。

サービス構成

ドメイン名、Windowsのアカウント、postgresのパスワードを入力して"次へ"をクリックします。

インストールオプション

postgresというユーザーが存在しないので、"はい"をクリックして作成します。

アカウントエラーです

指定したパスワードが単純な場合、ランダムな強いものと取り替えるかどうかを聞かれます。ここでは取り替えないため、"いいえ"をクリックします。状況に応じて判断して各自判断してください。

成功

ユーザーが正常に作成されました。"OK"をクリックして進みます。

データベースクラスタの初期化

ロケールには "Japanese, Japan" "C"、エンコーディングには"EUC-JP"を選択します。このデータベースのスーパーユーザーとなるpostgres(Windowsのユーザーではありません)のパスワードを指定して、"次へ"をクリックします。Windowsのアカウントのpostgresとは別のパスワードを使うことが推奨されています。

ロケールに"C"以外を選択すると、PostgreSQLがおかしな挙動を示すことがあります。"C"以外を選択しないでください。

手続き言語を可能にする

PL/pgsqlにチェックを入れて"次へ"をクリックします。

貢献モジュールを可能にする

"貢献モジュールを可能にする"は、デフォルトのまま"次へ"をクリックします。必要に応じてモジュールにチェックを入れ、インストールしてください。

PostGIS有効化

"PostGISの有効化"は、デフォルトのまま"次へ"をクリックします。必要に応じてチェックを入れてください。

インストールの準備ができました

以上で必要な情報の入力は終了です。"次へ"をクリックしてインストールします。

インストールは完了しました

インストールが終了しました。"終わり"をクリックしてインストールを終了します。

pgAdminⅢ

PostgreSQLの稼動状況を確認するするため、
  "スタート"->"プログラム"->"PostgreSQL 8.0.0-rc2"->"pgAdmin III"
を選択してpgAdminⅢを起動します。
"PostgreSQL Database server"をダブルクリックします。

サーバーに接続

postgresユーザーのパスワードを入力し、サーバーに接続します。

pgAdminⅢ

サーバーに接続できることを確認し、pgAdminⅢを終了します。

コマンドラインからPostgreSQLのコマンドが実行できるよう、Pathに"C:\Program Files\PostgreSQL\8.0.0-rc2\bin"を追加しておきます。PostgreSQLのバージョンによってディレクトリが変わりますので、適宜読み替えてください。

初期設定とテスト

最初にユーザーとデータベースを作成します。

C:>createuser -a -d --username=postgres --pwprompt ユーザー名
could not find a "createuser" to execute
Enter password for new user: <-作成するユーザーのパスワードを入力
Enter it again: <-作成するユーザーのパスワードを再度入力
Password: <-postgresのパスワードを入力
CREATE USER

C:>createdb --encoding=EUC-JP --owner=ユーザー名 --username=ユーザー名 データベース名
could not find a "createdb" to execute
Password: <-ユーザーのパスワードを入力
CREATE DATABASE

C:>
次にテストテーブルを作成します。
次のような内容のファイルを、pg_test.sqlという名前で作成します。

create table shinamono (hinmei text, nedan integer);
insert into shinamono values ( 'orange', 100 );
insert into shinamono values ( 'apple', 200 );
psqlコマンドでテーブルを作成します。ユーザー名、データベース名は各自の環境にしたがって読み替えてください。

C:>psql -f pg_test.sql -h localhost -U ユーザー名 データベース名
could not find a "psql" to execute
パスワード:<-パスワードを入力
could not find a "psql" to execute
CREATE TABLE
INSERT 17273 1
INSERT 17274 1

C:>
次のような内容のファイルを、"My Document\My Website"に"pg_test.php"という名前で作成します。データベース名、ユーザー名、パスワードは各自の環境に従って読み替えてください。

<?php

$hostname = "localhost"; // DB Host
$sql      = "select * from shinamono";
$db_name  = "データベース名";
$db_user  = "ユーザー名";
$db_password = "パスワード";

if( !$pg_con=pg_connect( "host=$hostname" . " " .
                         "dbname=$db_name" . " " .
                         "user=$db_user" . " " .
                         "password=$db_password" ) ) {
 print "Error : failed to connect to ${hostname}<br>";
 exit;
}

if(!$result=pg_exec($sql) ){
 print "Error : could not execute SQL.<br>";
 exit;
}

$row=pg_numrows($result);
$clm=pg_numfields($result);
for( $i=0 ; $i < $row ; $i++ ){
 for( $j=0 ; $j < $clm ; $j++ ) {
  print pg_fieldname( $result , $j )." = ";
  print pg_result( $result , $i , $j ).":";
 }
 print "<br>";
}

pg_freeresult($result);
pg_close($pg_con);

?>

pgAdminⅢ

ブラウザで、"http://localhost/~ユーザー名/pg_test.php"にアクセスし、次のように表示されることを確認します。

以上でインストール終了です。