[PHP-users 2611] Netscape および iPlanet と php4.0.6

php-users@php.gr.jp php-users@php.gr.jp
Wed, 10 Oct 2001 10:17:05 +0900


お世話になります。吉田@池袋です。

Netscape および iPlanet でphp4.0.6を使用する場合、マニュアルどおりに
設定してもサーバーが起動しないケースが、ありましたので報告します。
試行錯誤のうえ両環境ともとりあえず動くようにはなりました。しかし4.0.4pl1
でははマニュアルどおりインストールしてまったく問題なく動きましたので
納得いきません。0.0.2のバージョンの何の違いでこのような振る舞いを
するのか、ご存知もしくは理由の推察できる方、ぜひアドバイスお願いし
ます。よろしくお願いします。

環境
OS:
 solaris 2.6
Webサーバー:
 NetscapeEnterpriseServer 3.61 および
 iPlanet-WebServer-Enterprise 4.1sp2
その他ソフトウエア:
 bison-1.25
 flex-2.5.4a
 gcc-2.95.3-sol26-sparc
 m4-1.4
 Oracle8.0.5 SQL*Netクライアント
 makeは/usr/ccs/bin/makeを使用

起動しない状況と対処:
  サーバー再起動(OFF/ON)時、サーバーマネージャーの画面上、
以下のエラーが出て止まります。
Status: 
[https-phptest]: start failed. (2: unknown early startup error)
[https-phptest]: server terminated (signal 6): watchdog is restarting it 
[https-phptest]: failure: server initialization failed 
Error
An error occurred during startup.
The server https-phptest was not started.

logs/error ではサーバーは無事起動したように出力されています。
また/var/adm/messagesでは

  Oct  9 16:46:45 kaihatsu uxwdog[26243]: server terminated (signal 6):
watchdog is restarting it
  Oct  9 16:46:45 kaihatsu uxwdog[26243]: server initialization failed

のエラーがでます。
サーバーマネージャー(Web)でなく、コマンドラインからstartさせようとすると
通常は

  # ./start
  iPlanet-WebServer-Enterprise/4.1SP2 BB1-07/18/2000 00:59
  startup: listening to http://kaihatsu, port 80 as nobody
  #

と表示されるのですが、2行のメッセージは出力されず、プロンプトが帰ってきてし
まう
状態になります。

対処方法1
 obj.confの以下の行に下記の変更(「LateInit=yes」を追加)を行ったところ

    Init fn=php4_init errorString="Failed to initialize PHP!"
   ↓
    Init fn=php4_init LateInit=yes errorString="Failed to initialize PHP!"

 上記の問題はなくなり、サーバーは無事起動されたように見えました。
しかしプロセスが立ち上がっては終了しCPUを常に100%使っている
状態になってしまいました。この間、/var/adm/messagesに
Oct  9 20:13:45 kaihatsu uxwdog[5743]: server terminated (signal 6):
watchdog is restarting it
のようなメッセージが延々と繰り返されていました。

対処方法2
 この状態をクリアするには「何故?」か、3.6.1も4.1もServletを有効に
して再起動することでした。PHPとServletが関係あるとは思えないので、
もしかしたらphp以外のnsapiのモジュールを込みこんだというところが
keyになっているのかもしれません。また対処方法1と組み合わせない
と、もともとの状態と同じになり起動できませんでした。
※開発機はこれでもOKですが、本番機(特にNetscapeEnerprise3.6.2
では)ではServletを無効化したいです。


設定した方法:        // ここから最後まで
4.04pl1の時とまったく同じです。

(1)環境変数設定
 
PATH=/usr/local/bin:/bin:/usr/bin:/usr/ucb:/etc:/usr/ccs/bin:/opt/oracle/bin
  ORACLE_HOME=/opt/oracle
  NLS_LANG=Japanese_Japan.JA16EUC

(2)準備 以下のコマンドを実行
    ./configure --with-oci8 --with-nsapi=/usr/ns-home --enable-track-vars
--enable-libgcc --enable-ftp
 (4.0.6では起動方法確認後、さらに、--enable-mbstring
--enable-mbstr-enc-transを付け足しています)

iPlanet 4.1ではここで、config_vars.mk中ののINCLUDES行の
「-I/usr/ns-home/include」
 の部分を、「-I/usr/ns-home/plugins/include」に変更しています

(3)make

(4)suより
 /usr/local/bin/make install

(5)サーバー設定MimeTypes追加
 サーバーマネージャーより以下のMimeTypeを追加

	type	magnus-internal/x-httpd-php	php

(6)obj.conf(/usr/ns-home/https-kaihatsu/config/)に以下を追加。

    Init fn="load-modules"
funcs="php4_init,php4_close,php4_execute,php4_auth_trans"
shlib="/usr/ns-home/bin/libphp4.so"
    Init fn=php4_init errorString="Failed to initialize PHP!"

    <object name="default">
    . 
    . 
    . 
    .// 注意 この次の行は全ての'ObjectType'の後で、'AddLog'行の前とする必要
があります
    Service fn="php4_execute" type="magnus-internal/x-httpd-php" 
    . 
    . 
    </Object>

    <Object name="x-httpd-php"> 
    ObjectType fn="force-type" type="magnus-internal/x-httpd-php" 
    Service fn=php4_execute 
    </Object> 


(7)/usr/ns-home/https-kaihatsu/startを修正、
 LD_LIBRARY_PATHに/usr/local/libとOracleのlibを追加

また以下の行を追加

    ORACLE_HOME=/opt/oracle;export ORACLE_HOME
    NLS_LANG=Japanese_japan.JA16EUC;export NLS_LANG

(8)サーバーマネージャーより「apply」ボタンにて手動でのobj.confの変更を反映