PHP 4.2.2インストール

PHPは・・・
とりあえずrootになっておこう。

1.インストール

用意した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

2.PostgreSQL用共有ライブラリの設定

WebからPHPを利用してPostgreSQLのデータベースにアクセスさせる場合は、PostgreSQLのアクセス用関数で使用する共有ライブラリ(libpq)の設定を行う。

# vi /etc/ld.so.conf

ファイルの最後に次の2行を追加し、保存する。

# /usr/local/lib
# /usr/local/pgsql/lib

修正を反映させるため、ldconfigを再起動する。

# /sbin/ldconfig

3.Apacheの設定

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.動作確認

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権限を持つテーブルでなければならない。


[ TOP ]