image header
Index >> Plamo Linux Fan >> Apache+PHP+InterBaseメモ
                Apache+PHP+InterBaseメモ
2003/07/10

1.目的

 PHPとは、最近話題のサーバサイドスクリプト言語です。
 サーバサイドスクリプトと言うことは、Perlのように使いたいときにいちいち別プロセスが起動されるわけではなく、WEBサーバに組み込まれているので、原理的にPerlよりは若干高速に動くはずです(mod_perlなど組み込まれている場合は別かもしれませんが)。
 ただし、HTMLソース中にコードが書けるので、テストやメンテナンスが楽にできそうだ、という点が最大の魅力です。
 というわけで、PHPはWEBサーバに「組み込まれて使われる」のが一般的(CGIとしても使えるらしいが)なので、WEBサーバにはそのための設定が必要です。これを行ってみましょう。
 なお、Apacheメモで書いている通り、Plamo-2.1対応のパッケージをいれると最初から Apache+PHP+PostgreSQL という構成にはなっていますが、これですと残念ながら僕の好きな InterBase は使えません(泣)
 そこで、InterBase が使える PHP を作らなくてはなりません。方法は2つ、パッケージを入れておいてPHPだけInterBase用に作り直すか、Apacheごと作り直すかです。僕の場合は PostgreSQL は使わないので、ここでは後者の方法を書いてみます。

2.入手先

PHP本体(国際化版)
http://www.php.gr.jp/project/i18n/
2002/07/27現在、php-3.0.18-i18n-ja-3 が最新。

※PHP-4.0.6で日本語対応が組み込まれたので、PHP-3を絡めるのはやめてみました。
PHP4本体
http://www.php.net/
2003/07/10現在、php-4.3.2 が最新
Apache
Apacheメモ参照
InterBase6
InterBaseメモ参照

3.導入方法

  1. InterBase6を導入

    これについては、InterBaseメモを参照のこと。

  2. PHP/Apacheのソースを持ってくる

    適当な場所に置く。ここではとりあえず自分のホームディレクトリにおくことにする。

  3. まずApacheを展開する

    $ tar xvfz apache_1.3.xx.tar.gz
    ※xxはバージョンにより適宜埋める

  4. Apacheをインストールする

     Plamo2.x + Apache 1.3.xx DSO の組み合わせですと、httpd.conf 内の Group nogroup が嫌らしく、起動してくれませんでしたので、僕は apache グループを作成して、この権限で動かすように configure しました。

    $ cd apache_1.3.xx
    $ env OPTIM=-O2 ./configure --enable-shared=max --server-gid=apache --with-port=80
    $ make
    $ su
    password
    # make install

  5. 続いてPHPを展開する

    # exit
    $ cd ..
    $ tar xvfz php-3.0.18-i18n-ja-3.tar.gz
    $ tar xvfI php-4.2.3.tar.bz2

  6. インストールする

    $ cd php-3.0.18-i18n-ja-3
    $ ./configure --with-apxs=/usr/local/apache/bin/apxs \
    --with-interbase=/opt/interbase --enable-versioning \
    --enable-i18n --enable-mbregex --enable-track-vars
    $ make
    $ su
    password
    # make install

    php3.ini-distファイルを下記の様にコピーする。

    # cp php3.ini-dist /usr/local/lib/php3.ini

    続いて、PHP4もインストールする

    $ cd ../php-4.2.3
    $ ./configure --with-apxs=/usr/local/apache/bin/apxs \
    --with-interbase=/opt/interbase --enable-mbstring \
    --enable-mbstr-enc-trans --enable-mbregex \
    --enable-track-vars --without-mysql
    $ make
    $ su
    password:
    # make install

    同様にして、php.ini-distファイルをコピーする。

    # cp php.ini-dist /usr/local/lib/php.ini

  7. apacheでphp用の設定を有効にする

    /usr/local/apache/conf/httpd.conf の以下の2行の先頭のコメントを外し、拡張子がphp3であるファイルをphp3スクリプト、phpであるファイルをphp4スクリプトを含むファイルと認識させる。同様に、phpsであるファイルをphpのソースコードを含むファイルであると認識させる。

    # vi /usr/local/apache/conf/httpd.conf
    # grep x-httpd-php3 /usr/local/apache/conf/httpd.conf
    AddType application/x-httpd-php3 .php3
    AddType application/x-httpd-php3-source .phps


    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps

    また、ディレクトリインデックス(http://yourhost.domain/とやったときに表示されるファイル)に index.php index.php3 を追加する。

    # vi /usr/local/apache/conf/httpd.conf
    # grep index.php /usr/local/apache/conf/httpd.conf
    DirectoryIndex index.php index.html

    PHPスクリプトよりindex.htmlを優先したいときは、順番を逆にする。

  8. apacheを起動する

     apache の動作するGIDを apache としたので、apache グループを作成しておかなくてはなりません。

    # su
    password:
    # groupadd apache

     それと、デフォルトのポートが 8080 になっている(?)ので、こちらも一般的な80に直しておきます。これで、

    # /usr/local/apache/bin/apachectl start
    /usr/local/apache/bin/apachectl start: httpd started

    と出れば、恐らく動いているでしょう。

    どうも、root以外でコンパイルするとデフォルトが8080になるらしいことを最近知った(笑)
  9. phpが動いているかテストする

    /usr/local/apache/htdocs/phpinfo.php というファイルを作り、中に以下の様に書きこむ。

    <? phpinfo(); ?>

    そしてブラウザで、http://yourhost.domain/phpinfo.php を開いてみる。PHP関連情報がずらっと表示されれば動いていると思われる。同様に、ファイル名をphpinfo.phpに変えておなじ事をしてみると、PHP4の情報が表示される。

  10. phpからInterBaseをアクセスしてみる

    /usr/local/apache/htdocs/ibphp.php というファイルを作り、中に以下の様に書きこむ。

    <?
    $host="localhost:/usr/interbase/examples/employee.gdb";
    $user="SYSDBA";
    $password="masterkey";
    $command="SELECT * FROM JOB";
    $conn = ibase_connect ($host,$user,$password);
    $result = ibase_query ($conn,$command);
    while ($row = ibase_fetch_object ($result)) {
      print "$row->JOB_CODE, $row->JOB_COUNTRY, $row->JOB_TITLE, $row->MAX_SALARY<br>\n";
    }
    ibase_free_result($result);
    ibase_close ($conn);
    ?>

    そしてブラウザで、http://yourhost.domain/ibphp.php を開いてみる。EMPLOYEEデータベースの中のJOBテーブルの一部がずらりと表示されればOK。

4.運用

  1. IbaseAdminでデータベースをいぢる
     IbaseAdmin は、phpMyAdminとかphpPgAdminのように、Web上からデータベースを管理するツールです。といってもまだまだ発展途上でできることも限られてますが、スキーマの確認とかフィールド名の確認なんかするときにお手軽便利なので、一度試してみてはどうでしょう?

     IbaseAdmin はこちらから入手できます。

    http://pkedu.fbt.eitn.wau.nl/ibaseadmin/
     これは、PHP スクリプト群なので、インストールする場所は自分がPHPを置ける場所で結構です。~/public_html/でも構いません。
    1. 展開する

      $ tar xvfz IbaseAdmin-0.2.tar.gz

    2. 設定する

      $ cd IbaseAdmin-0.2
      $ vi config.inc

       変更が必要、またはするかもしれないディレクティブは下記の通り。
      - $database_dir_paths[]
      データベースファイルが置いてあるパスを指定。このパスにあるすべてのデータベースが操作可能となるので、気にいらない時はコメントアウトする。
      - $database_file_paths[]
      特定のデータベースファイルに関してだけ操作したい場合は、ここにデータベースファイル名を記述する。
      - $$history_directory
      データベース操作履歴を記録しておくファイルを置く場所を指定する。このディレクトリは存在する必要があり、且つApacheから書き込める必要がある。chmod o+rwx [パス] としておくといい。
    3. 動かす
       ブラウザで上記のURLを叩いてみよう。

     中身については、まぁデータベースの用語が大体わかっているなら説明の必要もないでしょうし、説明できるほど何も知りませんので(笑)割愛します。とにかくいぢってみればわかります。

付録1.参考文献

InterBaseメモ
手前味噌ですが(^^;
日本PHPユーザ会
現在はこちらが日本のPHP情報のポータルらしいですね。PHPに関するほとんどすべての情報はこちらからたどれます。和文マニュアルもありますし、書籍も紹介されています。
PHP ML
PHPのMLが新しくなってます。こちらのページから申し込みできます。
PHP Beginner's Guide
公式な日本語マニュアルを読んで理解できない方向けだそうです。僕にはあまり必要のないものですが、ご紹介まで(^^;
PHP研究室
Data Explorer for SQL の一次配布サイトですが、PHPのインストールガイドにもなってます。Windows で学習環境を作りたいなら一度訪れては? ただし、InterBaseとの連携については触れられていませんのであしからず。
Let's PHP
PHPスクリプトのソースが置かれている数少ない日本語サイト。人のソースを見るのはいろいろな意味で勉強になります。
InterBase利用の為のPHPのサンプル
kawasatoさんが作成された、Apache + PHP3 + InterBase のサンプルが置かれています。PHP3 + InterBase って情報がないので、貴重です。
Using Apache, PHP3 and Interbase on Linux.
海外の PHP3 と InterBase のインテグレーションのページです。
PHP4 / InterBase 6 community
InterBase6とPHP4で出来る事を紹介しているページ。こっち方面へ行きたいと思っているんですが、なかなか(^^;;;
IbaseAdmin
MySQL用のphpMyAdmin、PostgreSQL用のphpPgAdminと同様、データベースのメンテナンスがWeb上から行える PHP スクリプトです。

Index >> Plamo Linux Fan >> Apache+PHP+InterBaseインテグレーションメモ

image footer