PHP マニュアル
前のページ | 第 6章Windows システムへのインストール | 次のページ

# Sun, iPlanet, Netscape サーバ（Microsoft Windows 用）

このセクションでは、Windows 上の Sun Java System Web Server, Sun ONE Web Server, iPlanet and Netscape server で PHP を使用する場合について説明します。

PHP 4.3.3 より、NSAPI モジュール を使って 独自エラーページ およびファイル一覧表示ページの生成 が可能です。 Apache 互換の関数も追加されています。 また、これらの WEB サーバ専用の機能については、 「サブリクエストに関する注意」 をお読みください。

## Sun, iPlanet, Netscape サーバ で CGI 版の PHP を使用する

CGI 版の PHP を使用する場合は、以下のようにしてください。

- `php4ts.dll` をシステムルート （Windows がインストールされているフォルダ）にコピーします。

- コマンドラインからファイルの関連付けを行います。 次の 2 行をタイプしてください。

      assoc .php=PHPScript
      ftype PHPScript=c:\php\php.exe %1 %*

- Netscape Enterprise Administration Server で、ダミーの shellcgi ディレクトリを作成し、その後すぐに削除します （このステップにより 5 つの重要な行が obj.conf に作成され、 Web サーバが shellcgi スクリプトを扱えるようになります。）

- Netscape Enterprise Administration Server で 新しい mime type を作成します。(Category: type, Content-Type: magnus-internal/shellcgi, File Suffix:php)

- PHP を実行するすべての Web サーバインスタンスで上記を実行してください。

CGI 版の PHP を使用する場合の詳細な説明は http://benoit.noss.free.fr/php/install-php.html を参照してください。

## Sun, iPlanet, Netscape サーバ で NSAPI 版の PHP を使用する

NSAPI 版の PHP を使用する場合は、以下のようにしてください。

- `php4ts.dll` をシステムルート （Windows がインストールされているディレクトリ）にコピーする。

- コマンドラインからファイルの関連付けを行います。 次の 2 行をタイプしてください。

      assoc .php=PHPScript
      ftype PHPScript=c:\php\php.exe %1 %*

- Netscape Enterprise Administration Server において 新しい mime type を作成します。 (Category: type, Content-Type: magnus-internal/shellcgi, File Suffix:php)

- `magnus.conf` (サーバ>= 6の場合) または `obj.conf` (サーバ< 6の場合)を編集し、 以下の行を追加します。 この行は `mime types init` の後に記述する必要があります。

      Init fn="load-modules" funcs="php4_init,php4_execute,php4_auth_trans" shlib="c:/php/sapi/php4nsapi.dll"
      Init fn="php4_init" LateInit="yes" errorString="Failed to initialise PHP!" [php_ini="c:/path/to/php.ini"]

  (PHP >= 4.3.3) `php_ini` パラメータはオプションですが、 これを指定することにより、Web サーバの設定ファイルがあるフォルダに `php.ini` を置くことが可能になります。

- `obj.conf` のデフォルトオブジェクトを設定します （仮想サーバの場合、`vserver.obj.conf` のクラス [SunONE 6.0]。） `< Object name="default" >` セクションに 次の行を追加してください。この行は、 'ObjectType' の後、'AddLog' の前に記述してください。

      Service fn="php4_execute" type="magnus-internal/x-httpd-php" [inikey=value inikey=value ...]

  (PHP >= 4.3.3) 追加のパラメータとして、いくつかの特別な `php.ini` 値を 追加することができます。例えば、コンテキスト `php4_execute` をコールする時に `docroot="/path/to/docroot"` を設定することができます。 論理値の場合、 `"On","Off",...`（これは正 しく動作しません）ではなく、0/1 を値として使用してください。 例えば、 `zlib.output_compression="On"` ではなく、 `zlib.output_compression=1` とします。

- 以下は、（`cgi-bin` ディレクトリ のように）PHP スクリプトのみからなるディレクトリを設定したい場合にだけ必要です。

      <Object name="x-httpd-php">
      ObjectType fn="force-type" type="magnus-internal/x-httpd-php"
      Service fn=php4_execute [inikey=value inikey=value ...]
      </Object>

  これにより、Administration Server に特定のディレクトリを設定し、 これをスタイル `x-httpd-php` に割り付けることができ ます。このディレクトリの中にあるすべてのファイルは PHP スクリプト として実行されます。 これは、ファイルの名前を `.html` に変更し、PHP が使用されている事を隠したい場合に有用です。

- Web サービスを再起動して設定を反映させます。

- PHP を実行するすべての Web サーバインスタンスで上記を行ってください。

> 注意: NSAPI 版の PHP の使用についてのより詳細な説明は http://benoit.noss.free.fr/php/install-php4.html をご覧ください。

> 注意: PHP が使用するスタックサイズは WEB サーバの設定に依存します。 非常に大きい PHP スクリプトを実行させた際にクラッシュする場合は、 Administration Server でスタックサイズ（"MAGNUS EDITOR"） を大きくすると良いでしょう。

## CGI 環境変数と php.ini の変更

Sun JSWS/Sun ONE WS/iPlanet/Netscape がマルチスレッドの WEB サーバだという事が PHP スクリプトを書く際に重要になります。すべてのリクエストは同一の （WEB サーバ自体の）プロセス空間で実行されます。`PATH_INFO` や `HTTP_HOST` などの CGI 変数を取得する場合、 PHP 3.x で行っていたような古い方法、つまり getenv() 関数を使用する方法や他の同等な方法（グローバル変数の登録機能、 `$_ENV` 等）を使うのは正しい方法ではありません。WEB サーバの環境変数をただ単に取得すると、 正しい CGI 変数は得られません。

> 注意: なぜ正しくない CGI 変数が登録されているのでしょうか？

> それは、WEB サーバのプロセスを Administration Server から起動させる際、 WEB サーバの起動スクリプトが CGI スクリプトとして実行されるためです。したがって、 起動された WEB サーバの環境変数には CGI 変数も含まれることになります。 Administration Server 以外から WEB サーバを起動してみればこのことをテストできるでしょう。 ルートユーザでコマンドラインを使って、手動で起動してみると、CGI 変数らしき 環境変数が登録されないことが確認できると思います。

PHP 4.x のスクリプトで CGI 変数を取得する場合は、スーパーグローバル `$_SERVER` を用いるのが正しい方法です。また、`$HTTP_HOST` などを使う古いスクリプトを使用する場合は、`php.ini` で `register_globals` をオンにし、変数のパースの順番 (`variables_order`) を変更してください （`"E"` を削除。環境変数を読み込む必要は無いため。）

    variables_order = "GPCS"
    register_globals = On

## 独自エラーページおよびファイル一覧表示ページ (PHP >= 4.3.3)

PHP を使って、`"404 Not Found"` などに対するエラーページを生成することが できます。オーバーライドしたいエラーページすべてに対して、以下の行を `obj.conf` 中のオブジェクトに追加してください。

    Error fn="php4_execute" code=XXX script="/path/to/script.php" [inikey=value inikey=value...]

ここで、`XXX` は HTTP のエラーコードです。 追加したものと干渉する `Error` ディレクティブは削除してください。 発生するすべてのエラーに対応するページを設定したい場合は、 `code` パラメータを省略してください。スクリプトで HTTP ステータス コードを取得するには、 `$_SERVER['ERROR_TYPE']` を使用します。

独自のファイル一覧表示ページを PHP を使って生成することも可能です。 ファイル一覧表示を行う PHP スクリプトを作成し、`obj.conf` の `type="magnus-internal/directory"` の行に 書かれているデフォルトのサービスを以下のように置き換えます。

    Service fn="php4_execute" type="magnus-internal/directory" script="/path/to/script.php" [inikey=value inikey=value...]

エラーページ、ファイル一覧表示ページのどちらでも、元の URI および 変換後の URI は、それぞれ、`$_SERVER['PATH_INFO']` および `$_SERVER['PATH_TRANSLATED']` に格納されています。

## nsapi_virtual() およびサブリクエストに関する注意 (PHP >= 4.3.3)

NSAPI モジュールは、現在、nsapi_virtual() 関数 (エイリアス: virtual()) をサポートしており、 WEB サーバへサブリクエストを行い、結果を WEB ページへ挿入することができます。 問題としては、この関数は 文書化されていない NSAPI ライブラリの機能を使用して いることにあります。

Unix では、モジュールは自動的に必要な関数群を探し、可能であればそれらの関数を 使用するため、特に問題はありません。もし使用可能でなければ、nsapi_virtual() は 使用不可となります。

Windows では、DLL の扱いに制限があるため、自動認識の使用には 最新の `ns-httpdXX.dll` ファイルが必要です。 バージョン 6.1 までテストが行われています。もし、より新しい Sun サーバを使う場合は、 自動認識が動作せず、nsapi_virtual() が使用不可となる可能性が あります。

もしそういった事になった場合は、 `magnus.conf`/`obj.conf` の `php4_init` へ以下のパラメータを追加してください。

    Init fn=php4_init ... server_lib="ns-httpdXX.dll"

ここで、`XX` は接続する DLL のバージョン番号です。 番号を調べるには、サーバのルートで、対応する名前のファイルを探してください。 おそらく、最もファイルサイズの大きい DLL が探しているファイルでしょう。

ステータスは phpinfo() 関数を使って確認できます。

> 注意: nsapi_virtual() サポートは「実験的」な機能です。

前のページ | ホーム | 次のページ
Apache 2.0.x （Microsoft Windows 用） | 上に戻る | OmniHTTPd サーバ