4

いくつかのカスタム ヘッダーがあり、 では表示されませんが$_SERVER、 help で表示されますapache_request_headers()

このような問題は、Windows ベースの Apache の 1 つのバージョン (OpenServer) にのみ存在します。Mac と Linux では、Apache はすべてのヘッダーを php に渡します。変数で見ることができ$_SERVERます... Windows に何らかの制限があるのではないでしょうか? または、すべてのヘッダーを mod_php に渡すことを有効にできる設定が apache.conf にありますか?

4

3 に答える 3

4

PHPがWindowsでApacheモジュールとして実行されている場合、$_SERVER自動グローバル配列にすべてのヘッダーが表示されるわけではありません。

apache_request_headers()を使用してそれらを取得する必要があります。いくつかのコードを使用して、クロスプラットフォーム展開を取得できます。

function GetHeader($myheader) {
  if (isset($_SERVER[$myheader])) {
    return $_SERVER[$myheader];
  } else {
    $headers = apache_request_headers();
    if (isset($headers[$myheader])) {
      return $headers[$myheader];
    }
  }
  return '';
}

PHPが十分に新しい場合は、getallheaders()を試すこともできます。

http://php.net/manual/en/function.getallheaders.php

于 2013-03-13T13:12:30.960 に答える
0

PHPドキュメントから:http://php.net/manual/en/reserved.variables.server.php

コメントについて、次のことに注意してください。

Windows IIS 7では、サーバーのIPアドレスを取得するには、$ _SERVER['SERVER_ADDR']ではなく$_SERVER['LOCAL_ADDR']を使用する必要があります。

一部の変数名はWindowsで異なるように思われるので、それらを見つける必要があります。ドキュメントのコメントをよく見ると、いくつかの回避策があります。

于 2013-03-13T12:31:51.070 に答える