8

phpinfo()という名前の変数を示しています_SERVER["CONTEXT_PREFIX"]http://www.php.net/manual/en/reserved.variables.server.phpには記載されていません。
正確には何ですか?$_SERVER[*]すべての変数に関するドキュメントはどこにありますか? そのリストには、php.net Web ページにないものがいくつかあります。

編集
コメントから、これはおそらくサーバーに依存していることがわかります。Windows で UniServer スタックを使用していますが、これは信頼できないため、このキーが存在することに依存しません。

どのキーが 99% の時間 (つまり、考えられるすべてのセットアップで) 存在するかのリストはありますか?

4

2 に答える 2

9

6 月 28 日のソース管理によると、Apache 2.3.13 で新しく追加されたようです。理解しやすいように見える CONTEXT_DOCUMENT_ROOT もあります。

「(mod_userdir や mod_alias などからの) 非グローバル URI からディレクトリへのマッピングに関する情報をスクリプトに提供する、新しい context_document_root と context_prefix を導入します。」ソース: http://marc.info/?l=apache-cvs&m=130928191414740

これは Apache から来ており、 http://example.com/~usernameを使用して「username」の Web スペースにある Web サイトにアクセスする場合など、リクエスト URI と異なるディレクトリ間で異なるマッピングを使用できる場合に関連しています。であるため、実際のドキュメント ルートは異なります。

次のように、1 つの URI に対して複数のディレクトリ ソースを指定する場合に役立つと思います。

Userdir public_html /usr/web 

その場合、ファイルが「public_html」または「/usr/web」にあるかどうかはわかりません (最初に一方を試行し、次にもう一方を試行するため)。そのため、CONTEXT_DOCUMENT_ROOT および CONTEXT_PREFIX がファイルを見つけるのに役立ちます。

ドキュメントで2.3がスキップされているように見えるため、まだ正式なドキュメントを確認できません(http://httpd.apache.org/docs/


編集:コメントは、どのサーバー変数に依存できるかについての他の部分に答えています(言うことはできません)。「CONTEXT」変数がニーズを満たしていることがわかった場合は、「存在する場合はそれらを使用し、存在しない場合は別のものを使用する」という関数を作成する必要がある場合があります。

これの一般的な例は、ソース プロトコルを取得しようとする場合です (信頼できないと思いますが、私は知っています)。HTTPS = 'on' を検索する前に、最初にプロキシが追加したヘッダー (X_FORWARDED_PROTO) を確認します。環境変数がたまたまサーバー上にある場合は、同様の操作が必要になる場合があります。

于 2012-08-26T11:15:15.940 に答える
1

これは $_SERVER グローバルのデフォルトの PHP キーではありません。

$_SERVERグローバル変数の PHP マニュアルを参照してください。

http://php.net/manual/en/reserved.variables.server.php

編集:(太字の文に注意してください)

$_SERVER は、ヘッダー、パス、スクリプトの場所などの情報を含む配列です。この配列のエントリは、Web サーバーによって作成されます。すべての Web サーバーがこれらのいずれかを提供するという保証はありません。サーバーは、一部を省略したり、ここにリストされていないものを提供したりする場合があります。 とはいえ、これらの変数の多くは » CGI/1.1 仕様で考慮されているため、それらを期待できるはずです。

于 2012-08-26T10:55:57.250 に答える