PHPは・・・
とりあえずrootになっておこう。
用意したPHPのソースを/usr/local/srcにコピーし、解凍、インストールする。
# cd /usr/local/src
# tar zxvf php-4.2.2.tar.gz
# cd php-4.2.2
# ./configure --enable-mbstring --enable-mbstr-enc-trans --with-pgsql=/usr/local/pgsql --with-apxs=/usr/local/apache/bin/apxs --enable-versioning
# make
# make installインストール終了後、PHP4の設定ファイルをコピーする。
# cp php.ini-dist /usr/local/lib/php.ini
WebからPHPを利用してPostgreSQLのデータベースにアクセスさせる場合は、PostgreSQLのアクセス用関数で使用する共有ライブラリ(libpq)の設定を行う。
# vi /etc/ld.so.conf ファイルの最後に次の2行を追加し、保存する。
# /usr/local/lib
# /usr/local/pgsql/lib修正を反映させるため、ldconfigを再起動する。
# /sbin/ldconfig
Apache上でPHPが使えるよう、httpd.confファイルを設定する。
# vi /usr/local/apache/conf/httpd.conf まず、PHP4スクリプトファイル(拡張子が.php)をPHP4スクリプトだと認識させる。以下のような行を探し、AddType行についているコメント(#)をはずす。ない場合は、任意の場所(ファイルの最後など)に追加する。
#
# And for PHP 4.x, use:
#
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps次に、index.phpというファイルがデフォルトページとして使えるよう、設定する。(任意)
<IfModule mod_dir.c>
DirectoryIndex index.html
</IfModule>上記の行を探し、以下のように修正して保存する。
<IfModule mod_dir.c>
DirectoryIndex index.html index.php
</IfModule>設定を反映させるため、Apacheを再起動する。
# /etc/rc.d/init.d/httpd stop
# /etc/rc.d/init.d/httpd start
4-1 ApacheからPHPが使えるかどうかを確認する
phpinfo.phpというファイルを以下の内容で作成し、クライアントからブラウズする。
<?php phpinfo(); ?> 「PHP Version 4.2.2」という表が出てきたらOK。「<?php phpinfo(); ?>」という文字列が表示されたら、PHPコマンドとして認識されていないことになるので、Apacheの設定などを見直す。
4-2 PHPからPostgreSQLデータベースのテーブルが利用できるかを確認する
PostgreSQLデータベース上の任意のテーブルが、PHPから検索できるかを確認する。select_tbl.phpというファイルを以下の内容で作成し、クライアントからブラウズする。
(※赤字のところは自分の環境に合わせて編集する)
<?php $db_host = "ホスト名またはIPアドレス"; $db_port = "5432"; $db_name = "データベース名"; ?> <HTML> <HEAD><TITLE></TITLE></HEAD> <BODY> <?php $con = pg_connect("host=$db_host port=$db_port dbname=$db_name"); if ($con == false) { echo "接続エラー!\n"; exit; } $tbl_name = "テーブル名"; $sql = "SELECT * FROM $tbl_name"; $result = pg_exec($con, $sql); if ($result == false) { echo "SQLエラー!\n"; exit; } $rows = pg_NumRows($result); for ($i = 0;$i < $rows; $i++) { echo pg_Result($result, $i, 1); echo "<BR>\n"; } pg_FreeResult($result); pg_Close($con); ?> </BODY> </HTML>エラーメッセージが出ずに、指定した表の1列目のデータが表示されればOK!
※ここで指定するテーブル名は、nobodyユーザがselect権限を持つテーブルでなければならない。