このセクションでは、Sun Solaris 上の Sun Java System Web Server, Sun ONE Web Server,
iPlanet and Netscape server に PHP をインストールする際の
手引きと注意事項について説明します。
基本インストールを実行したら、適当な readme ファイルを参照してください。
いくつかの追加インストール手順を実行する必要があるかもしれません。
まず、共有ライブラリの探索のために、環境変数
LD_LIBRARY_PATH にパスをいくつか追加する必要があります。
Webサーバーの開始スクリプトで行うのが最善でしょう。
開始スクリプトは、通常
/path/to/server/https-servername/start
にあります。
また、/path/to/server/https-servername/config/
にある設定ファイルの編集も必要です。
CGI 環境変数と php.ini の変更
Sun JSWS/Sun ONE WS/iPlanet/Netscape がマルチスレッドの Web サーバーだという事が
PHP スクリプトを書く際に重要になります。すべてのリクエストは同一の
(Web サーバー自体の)プロセス空間で実行され、そのプロセス空間は 1 つの環境変数しか
持っていません。PATH_INFO
や HTTP_HOST
CGI 変数を取得する場合、
古い PHP で行っていたような方法、つまり 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
行を以下のように置き換えます。
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'] に格納されます。