2010年5月19日水曜日

第20回 PHP5.3.2のインストール

上記のように、PHPはwww.sunfreeware.comから、php-4.4.5、php-5.2.1、php-5.2.13をダウンロードすることができるが、これまで使用してきた下記に示す環境では、要件にあわせることが難しい。

# /usr/apache2/bin/httpd -v
Server version: Apache/2.0.63
Server built: Jan 24 2009 07:36:42

# /usr/sfw/bin/gcc -v
Reading specs from /usr/sfw/lib/gcc/i386-pc-solaris2.10/3.4.3/specs
Configured with: /builds/sfw10-gate/usr/src/cmd/gcc/gcc-3.4.3/configure --prefix=/usr/sfw --with-as=/usr/sfw/bin/gas --with-gnu-as --with-ld=/usr/ccs/bin/ld --without-gnu-ld --enable-languages=c,c++ --enable-shared
Thread model: posix
gcc version 3.4.3 (csl-sol210-3_4-branch+sol_rpath)

このため、PHP Version 5.3.2をソースコードからダウンロードして、コンパイルしたものをインストールする。また、OracleDBに接続する環境も構築する。OracleDBに接続するためにはOracleのライブラリを参照してコンパイルしなければならない、そのためのユーザーと、コマンドからもPHPが実行できるユーザーを作成して、それを「php」とする。

  1. PHPのインストール手順
    1. rootユーザーでログインして「php」グループ、ユーザーを作成する。その際、作成したユーザーがoracleのライブラリを参照できるように、セカンダリユーザーグループに「oinstall」を指定する。プロファイルはoracleのものを流用して、後でインストーラが作成する「/opt/php/bin」にパスを通しておく。
    2. # groupadd php
      # useradd -g php -G oinstall -d /export/home/php -m php
      64 ブロック
      # passwd php
      新しいパスワード:
      新しいパスワードを再入力してください:
      passwd: php のパスワードが変更されました
      # mkdir -p /opt/php
      # cp /export/home/oracle/.profile /export/home/php/.profile

      # vi /export/home/php/.profile

      PATH=/usr/bin:/usr/sbin:/usr/ccs/bin:/usr/sfw/bin:/usr/ucb:$ORACLE_HOME/bin:.; export PATH

      PATH=/opt/php/bin:/usr/bin:/usr/sbin:/usr/ccs/bin:/usr/sfw/bin:/usr/ucb:$ORACLE_HOME/bin:.; export PATH

    3. 「php」ユーザーになって、PHP Version 5.3.2をダウンロードから、「configure」を実行して「Makefile」の作成、「configure」より作成された「Makefile」によってソースファイルのコンパイルまでを行う。
    4. # su - php
      $ wget http://jp2.php.net/get/php-5.3.2.tar.gz/from/jp.php.net/mirror
      ...
      $ gzip -d php-5.3.2.tar.gz
      $ tar xvf php-5.3.2.tar
      ...
      $ cd php-5.3.2
      $ ./configure \
      --prefix=/opt/php \
      --with-apxs2=/usr/apache2/bin/apxs \
      --enable-mbstring \
      --with-gd \
      --with-zlib \
      --with-oci8 \
      --enable-sigchild \
      --enable-zend-multibyte
      ...
      $ make
      ...

    5. rootユーザーの戻り、「make install」を実行して、makeが生成したバイナリのインストールを行う。
    6. $ exit
      # PATH=/opt/php/bin:/usr/bin:/usr/sbin:/usr/ccs/bin:/usr/sfw/bin:/usr/ucb:$ORACLE_HOME/bin:.; export PATH
      # cd /export/home/php/php-5.3.2
      # make install
      ...

    7. viで「httpd.conf」を開き、インストーラがLoadModuleディレクティブにphp5_moduleを追加してあるか確認をして、AddTypeディレクティブにPHPスクリプトファイルの拡張子を追加して、同拡張子をもつファイルを呼び出したときに、PHP5のApache2拡張モジュールが処理するよう設定する。
    8. # vi /etc/apache2/httpd.conf
      ...
      LoadModule php5_module libexec/libphp5.so
      ...
      AddType application/x-compress .Z
      AddType application/x-gzip .gz .tgz

      AddType application/x-compress .Z
      AddType application/x-gzip .gz .tgz
      AddType application/x-httpd-php .php
      AddType application/x-httpd-php-source .phps

    9. 前回と同じように「httpd.conf」の「DocumentRoot」の定義を調べ、PHPスクリプトを作成したディレクトリから、ドキュメントルート(DocumentRoot)にシンボリックリンクを張る。
    10. # cat /etc/apache2/httpd.conf|grep ^DocumentRoot
      DocumentRoot "/var/apache2/htdocs"
      ...
      # ln -s /export/home/oracle/php /var/apache2/htdocs/php

    11. Apache/2.0.63を起動または、再起動する。このあたりのコマンドは「第7回 Webサーバーの起動」を参照されたい。
    12. # /etc/init.d/apache stop
      ...
      # /etc/init.d/apache start

    13. URLにhttp:// server_addr :7777/php/phpinfo.phpを指定してPHPスクリプトの実行結果を確認する。

  2. OracleDBに接続する環境の構築
    1. Apacheの実行ユーザーがoracleのライブラリを使用できるように、/usr/apache2/bin/envvars に環境変数を追加する。 
    2. # vi /usr/apache2/bin/envvars
      ...
      #
      LD_LIBRARY_PATH="/usr/apache2/lib:$LD_LIBRARY_PATH"
      export LD_LIBRARY_PATH
      #

      #
      ORACLE_BASE=/opt/app/oracle; export ORACLE_BASE
      ORACLE_HOME=$ORACLE_BASE/product/10.2.0; export ORACLE_HOME
      ORACLE_SID=orcl; export ORACLE_SID
      NLS_LANG=Japanese_Japan.JA16EUCTILDE; export NLS_LANG
      ORA_NLS10=$ORACLE_HOME/nls/data; export ORA_NLS10
      LD_LIBRARY_PATH=$ORACLE_HOME/lib; export LD_LIBRARY_PATH
      PATH=/usr/bin:/usr/sbin:/usr/ccs/bin:/usr/sfw/bin:/usr/ucb:$ORACLE_HOME/bin:.; export PATH
      LD_LIBRARY_PATH="/usr/apache2/lib:$LD_LIBRARY_PATH"
      export LD_LIBRARY_PATH
      #

    3. OracleDBに接続するPHPスクリプトを作成する。
    4. $ mkdir -p /export/home/oracle/php
      $ vi /export/home/oracle/php/db.php
      ...
      <html>
      <head>
      </head>
      <body>
      <?php
       $connection = oci_connect('scott', 'tiger');
       $sql = 'select table_name from user_tables';
       $statement = oci_parse($connection, $sql);
       oci_execute($statement);
       while($record = oci_fetch_array($statement)) {
        print $record['TABLE_NAME'] . "<br> \n";
       }
       oci_free_statement($statement);
       oci_close($connection);
      ?>
      </body>
      </html>
      ...

    5. URLにhttp:// server_addr :7777/php/db.phpを指定してPHPスクリプトの実行結果を確認する。
    6. 必要ないならスクラッチを消す。
    7. $ rm -r /export/home/php/php-5.3.2
      ...
      $ rm /export/home/php/php-5.3.2.tar
      ...

2010年5月18日火曜日

第19回 PHP4.3.9のインストール

Oracle HTTP Serverがインストール済みであれば、PHP Version 4.3.9も同時にインストールされているので、PHP実行環境はすでに構築されている。 その手順は「第13回 HTTP ServerでPL/SQLのWeb Applicationを動かす」の示すとおりであり、そこまでの構築が完了しているならば、あとは下記のとおりにPHPスクリプトを作成して、走らせるだけである。

  1. 「oracle」ユーザー直下にphpディレクトリを作成して、そこにPHPスクリプトを作成する。
  2. $ mkdir -p /export/home/oracle/php
    $ vi /export/home/oracle/php/phpinfo.php
    ...
    <?php
    phpinfo();
    ?>
    ...

  3. HTTP Server(Apache)の「httpd.conf」から「DocumentRoot」の定義を調べ、PHPスクリプトを作成したディレクトリから、ドキュメントルート(DocumentRoot)にシンボリックリンクを張る。
  4. $ cat /opt/app/oracle/product/10.2.0/companion/Apache/Apache/conf/httpd.conf|grep ^DocumentRoot
    DocumentRoot "/opt/app/oracle/product/10.2.0/companion/Apache/Apache/htdocs"

    ...

    $ ln -s /export/home/oracle/php /opt/app/oracle/product/10.2.0/companion/Apache/Apache/htdocs/php

  5. Oracle HTTP Serverを起動する。この辺のコマンドは「第12回Oracle HTML DB、HTTP Serverのインストール」を参照されたい。
  6. $ /opt/app/oracle/product/10.2.0/companion/opmn/bin/opmnctl startall

  7. URLにhttp://server_addr:7777/php/phpinfo.phpを指定してPHPスクリプトの実行結果を確認する。
  8. Configure Commandの値が示すように、このバイナリがビルドした状況では現存しないパスを示している。特に Oracle接続には「oci8」の示す内容で、Oracleコールインターフェース (OCI)を使用したいがこれも実在しない場所を参照している。Oracle HTTP Serverに古いバージョンのPHPを組み合わせて使用する理由もないので、DB接続については次回行う。Oracle HTTP Server上でこのバージョンのPHPを使用する場合は、下記のとおりソースをダウンロードしてからビルドして使用する。

    $ wget http://museum.php.net/php4/php-4.3.9.tar.gz