Windows上にPHP5とPostgreSQL8.0をインストールして、学習環境を構築する手順を説明します。
次のバージョンのソフトウェアで環境を作ります。
install.txtによると、Apache2と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 php
C:>cd php
C:>unzip php-5.0.3-Win32.zip
設定ファイルをコピーします。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 -v
PHP 5.0.3 (cli) (built: Dec 15 2004 08:07:57)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v2.0.3, Copyright (c) 1998-2004 Zend Technologies
C:>
apacheのダウンロードページから最新版Apacheを入手します。2005/01/02時点では2.0.52が最新でした。
入手したファイルを実行します。
Apache Licenceの画面ではライセンス条項を確認したうえ、"I accept the terms in the licence agreement"をチェックして、"Next"をクリックします。
"Server Information"では、このサーバーの情報を入力します。この環境はローカルのテスト環境のため、"Network Domain"には"localnet"を入力、"Administrator's Email Address"には、"administrator@localhost"を入力しています。
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"という設定になっているので、作成しておきます。
"My Website"に、次のような内容のファイルを、phpinfo.phpという名前で作成します。
<?php phpinfo() ?>
ダウンロードページから最新版PostgreSQL8.0を入手します。2005/01/02時点ではpostgresql-8.0.0-rc2-2-ja.zipが最新でした。
なお、cygwinがインストールされていて、Pathにcygwinのディレクトリが入っていると、インストールで警告が出ます。英語版のrc2では出なかったようですが、日本語版のrc2では出るようです。インストール前にcygwinのディレクトリをPathからはずしておいたほうがよいでしょう。
入手したファイルを解凍し、実行します。
ロケールには "Japanese, Japan" "C"、エンコーディングには"EUC-JP"を選択します。このデータベースのスーパーユーザーとなるpostgres(Windowsのユーザーではありません)のパスワードを指定して、"次へ"をクリックします。Windowsのアカウントのpostgresとは別のパスワードを使うことが推奨されています。
ロケールに"C"以外を選択すると、PostgreSQLがおかしな挙動を示すことがあります。"C"以外を選択しないでください。
PostgreSQLの稼動状況を確認するするため、
"スタート"->"プログラム"->"PostgreSQL 8.0.0-rc2"->"pgAdmin III"
を選択してpgAdminⅢを起動します。
"PostgreSQL Database server"をダブルクリックします。
コマンドラインから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);
?>
以上でインストール終了です。