3

そのため、DOCUMENT_ROOT が適切に設定されないため、VirtualDocumentRoot と mod_vhost_alias を使用して Apache を実行すると、DOCUMENT_ROOT を使用する PHP スクリプトが壊れるという苦情が寄せられました。Apache は明らかにこれを以前に修正しており、簡単なメモは次のとおりです

残念ながら、リクエストごとに DocumentRoot を実際にオーバーライドする方法を説明する詳細は十分ではありません。どうにかして mod_rewrite で行う必要があると思いますが、確かではありません。誰もこれを行う方法を知っていますか?

4

2 に答える 2

3

明らかに、私は正しい質問をしていませんでした。以下は、Apache2 Bugzilla リストで Stephan から直接入手した情報です。

ステファンは次のように述べています。

バグ レポートは VirtualDocumentRoot に関するものでしたが、これにより DOCUMENT_ROOT が正しく設定されるようになりました。したがって、問題は解決されました。

そして、私は明確にするためにプッシュバックしました:

何かを見逃したのかもしれませんが、php で $_SERVER['DOCUMENT_ROOT'] をテストしたところ、VirtualDocumentRoot によって設定された値と一致しなかったことは確かです。今は一致すべきだと言っているのですか?

そして彼は答えた:

はい、2.4.x で。2.4 にのみ存在するインフラストラクチャを必要とするため、修正が 2.2.x に移植される可能性はほとんどありません。

そこで、apache2 -v を実行したところ、2.4.x を実行していないことがわかりました。Apache2 -v はこれを示しています:

Server version: Apache/2.2.16 (Debian)
Server built:   Nov 30 2012 08:33:45

そして、私が aptitude -install apache2 を使用した今年の 11 月末にサーバーが構築されたことに気付いた場合。apt-get が代わりに apache 2.4 をプルしたかどうかはわかりません。これは非常に不自由です。2.4.3 安定版は 8 月にリリースされました。aptitude が 2.2 になった理由はわかりませんが、これは本当に悪夢のようなものでした。

したがって、実際には、私が尋ねた質問は意味がありませんでした。aptitude が古い apache2 をインストールし、何が起こっているのかわからなかったことを除いて、すべてが正常に機能するはずでした。もうバグはありません。

于 2012-12-27T22:06:38.907 に答える
1

mod_vhost_aliasは、リクエストごとのドキュメントルートを設定する公式ディストリビューションの唯一のモジュールです。

DOCUMENT_ROOT CGI環境変数を設定するコードを含む、ap_document_root(r)を介してドキュメントルートを検索する既存のコードは、これらの変更を確認します。

この変更により、「ドキュメントルート」が実際には適切ではないmod_userdirなどのモジュールの新しい概念も導入されます。この新しい概念には、従来のドキュメントルートに関連付けられていない新しいAPIと新しいCGI環境変数(CONTEXT_PREFIX、CONTEXT_DOCUMENT_ROOT)があります。

私が適切であると思う唯一の実際のドキュメントは次のとおりです。

  • 開発者向けのドキュメント(基本的に完了)
  • mod_vhost_aliasによって設定されたDOCUMENT_ROOTを参照する移行者向けのドキュメント
  • 新しいCONTEXT_*変数とは何かに関するCGI/環境変数のドキュメント

しかし、mod_vhost_aliasと既存のDocumentRoot APIおよび環境変数が連携しているため、これらをやることが「壊れた」ままにしておくとは思いません。

質問が実際にmod_vhost_aliasの外部で「どのように」行われるかについては、ap_set_document_root()とap_set_context_info()に関してmod_userdirとmod_vhost_aliasの違いを確認してから、これらがserver/util_script.cのCGI環境変数にどのように影響するかを確認してください。

于 2012-12-26T17:23:52.293 に答える