【问题标题】:$_SERVER["HTTP_ACCEPT_ENCODING"] not set by nginx$_SERVER["HTTP_ACCEPT_ENCODING"] 未由 nginx 设置
【发布时间】:2013-03-11 22:41:51
【问题描述】:

我已经在我的服务器上安装了nginx。现在我没有得到在 Apache 中工作的 $_SERVER["HTTP_ACCEPT_ENCODING"] 变量。

如何获得?

【问题讨论】:

标签: php apache nginx centos


【解决方案1】:

通过编辑 /etc/nginx/proxy.inc 终于找到了解决方案

proxy_set_header Accept-Encoding ""

proxy_set_header 接受编码 $http_accept_encoding

【讨论】:

    【解决方案2】:

    当您使用 NGINX 运行 PHP-FPM 时,php 将以完全不同的方式查看 $_SERVER 变量(这是因为默认将服务器参数传递给 nginx 中的 fcgi 脚本)。

    当以 php-fpm 运行时,php 如何看到 $_SERVER 变量: 代码: 数组([USER] => 没有人 [HOME] => / [FCGI_ROLE] => RESPONDER [SCRIPT_FILENAME] => /usr/local/www/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;你;英特尔 Mac OS X 10_5_8; en-us) AppleWebKit/533.17.8 (KHTML, like Gecko) Version/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] => keep-alive [PHP_SELF] => /example/index.php [REQUEST_TIME] => 1282822862 )

    注意 HTTP_CONTENT_TYPE、HTTP_X_FILE_SIZE、HTTP_X_FILE_NAME 和其他 HTTP_* 变量。

    这是一个简单的 php 函数,可以将这些标头值调整为类似 apache 的值。

     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;
    

    }

    【讨论】:

    • 但是我的 nginx 没有传递 HTTP_ACCEPT_ENCODING 变量
    猜你喜欢
    • 2013-05-18
    • 2013-10-21
    • 2012-07-09
    • 2010-10-11
    • 1970-01-01
    • 2016-03-17
    • 2013-01-21
    • 2013-12-29
    • 2020-07-21
    相关资源
    最近更新 更多