• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • apache_response_headers()

    (PHP 4 >= 4.3.0, PHP 5, PHP 7)

    获得全部 HTTP 响应头信息

    说明

    apache_response_headers(void): array

    获得全部 HTTP 响应头信息。

    返回值

    成功时返回包含全部 Apache 响应头信息的数组,或者在失败时返回FALSE.

    更新日志

    版本说明
    5.5.7此函数可用于 CLI server.
    5.4.0此函数可用于 FastCGI。此前仅在PHP以 Apache 模块方式运行时支持。
    4.3.3

    从PHP 4.3.3 起,也可在 Netscape/iPlanet/SunONE Web 服务器的NSAPI 服务器模块使用此函数。

    范例

    apache_response_headers()示例

    <?php
    print_r(apache_response_headers());
    ?>
    

    以上例程的输出类似于:

    Array
    (
        [Accept-Ranges] => bytes
        [X-Powered-By] => PHP/4.3.8
    )
    

    参见

    I get "Call to undefined function apache_response_headers()" when using php-cli so be aware of lack of this function CLI.
    In my case I was trying to test my app via phpunit (command line tool of course ;)) if it sends proper headers.
    This function doesn't exist on lighttpd, so I wrote this little function to emulate it:
    <?php
    if (!function_exists('apache_response_headers')) {
      function apache_response_headers () {
        $arh = array();
        $headers = headers_list();
        foreach ($headers as $header) {
          $header = explode(":", $header);
          $arh[array_shift($header)] = trim(implode(":", $header));
        }
        return $arh;
      }
    }
    ?>
    
    If apache_response_headers() returns an empty array, try calling flush() before and it'll get filled.
    I can confirm athlet's experience with apache_response_headers() using PHP 5.1.6. When the resulting array is empty or only contains "X-Powered-By" instead of the full list of values, you'll need to switch off output_buffering _before_ the script has been executed, for example with the following directive in .htaccess:
    php_value "output_buffering" "0"
    it _doesn't_ work when you do a you ini_set('output_buffering', 0); in your script. Not sure why that is so - it is not a bug in PHP, but probably has to do with how Apache populates the request values.
    For apache_response_headers() working good, you need to set up output_buffering = Off in php.ini
    Addendum: The code
    <pre>
    <?php
     print_r(apache_request_headers());
    ?>
    </pre>
    gives me
     Array
     (
      [X-Powered-By] => PHP/5.1.6
     )
    But the code
    <pre>
    <?php
     ob_end_flush();
     print_r(apache_request_headers());
    ?>
    </pre>
    Results in
     Array
     (
      [Content-Location] => phpinfo.de.php
      [Vary] => negotiate
      [TCN] => choice
      [X-Powered-By] => PHP/5.1.6
      [Keep-Alive] => timeout=15, max=96
      [Connection] => Keep-Alive
      [Transfer-Encoding] => chunked
      [Content-Type] => text/html
      [Content-Language] => de
     )
    call it after the you send the output to get all the headers