0

nginxサーバーにインストールしました。$_SERVER["HTTP_ACCEPT_ENCODING"]今、Apache で動作していた変数を取得できません。

これを入手する方法は?

4

2 に答える 2

2

/etc/nginx/proxy.incを編集して最終的に解決策を見つけました

proxy_set_header Accept-Encoding ""

proxy_set_header Accept-Encoding $http_accept_encoding

于 2013-03-22T08:34:55.443 に答える
0

NGINX で PHP-FPM を実行すると、php は $_SERVER 変数をまったく異なる方法で認識します (これは、サーバー パラメーターが nginx の fcgi スクリプトにデフォルトで渡されるためです)。

以下は、php-fpm として実行されたときに $_SERVER 変数がどのように php に表示されるかを示しています: /www.example.com/public_html/example/index.php [Content-Type] => multipart/form-data [QUERY_STRING] => upload=true [REQUEST_METHOD] => POST [CONTENT_LENGTH] => 40403 [SCRIPT_NAME] = > /example/index.php [REQUEST_URI] => /site/index.php?upload=true [DOCUMENT_URI] => /example/index.php [DOCUMENT_ROOT] => /usr/local/www/www.example.com /public_html [SERVER_PROTOCOL] => HTTP/1.1 [GATEWAY_INTERFACE] => CGI/1.1 [SERVER_SOFTWARE] => nginx/0.7.65 [REMOTE_ADDR] => 193.110.48.4 [REMOTE_PORT] => 9971 [SERVER_ADDR] => 192.168.1.10 [SERVER_PORT] => 80 [SERVER_NAME] => www.example.com [REDIRECT_STATUS] => 200 [HTTP_HOST] =>www.example.com [HTTP_ORIGIN] =>http://www.example.com [HTTP_X_FILE_SIZE] => 40403 [HTTP_X_REQUESTED_WITH] => XMLHttpRequest [HTTP_CACHE_CONTROL] => max-age=0 [HTTP_IF_MODIFIED_SINCE] => 1997 年 7 月 26 日月曜日 05:00:00 GMT [HTTP_CONTENT_LENGTH] => 40403 [HTTP_X_FILE_NAME] => nokia-6300-yahoo.jpg [HTTP_USER_AGENT] => Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-us) AppleWebKit/533.17.8 (KHTML、Gecko など) バージョン/5.0.1 Safari/533.17.8 [HTTP_CONTENT_TYPE] => multipart/form-data [HTTP_REFERER] => http://www.example.com/example/index.php [HTTP_ACCEPT] => / [HTTP_ACCEPT_LANGUAGE] => en-us [HTTP_ACCEPT_ENCODING] => gzip、deflate [HTTP_CONNECTION] => キープアライブ [PHP_SELF] => /example/index.php [REQUEST_TIME] => 1282822862 )

HTTP_CONTENT_TYPE、HTTP_X_FILE_SIZE、HTTP_X_FILE_NAME、およびその他の HTTP_* 変数に注意してください。

これは、これらのヘッダー値を apache のようなものに調整する単純な php 関数です。

 function getallheaders() {
    $replace_array = array('CONTENT_TYPE' => 'Content-Type',
                    'CONTENT_LENGTH' => 'Content-Length',
                    'X_FILE_SIZE' => 'X-File-Size',
                    'X_FILE_NAME' => 'X-File-Name');
    foreach($_SERVER as $h=>$v) {
        $h = str_replace("HTTP_", "", $h);
        $h = $replace_array[$h];
        $headers[$h] = $v;
    }
    return $headers;

}

于 2013-03-22T07:31:41.053 に答える