update pague now
PHP 8.5.2 Released!

header_remove

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

header_remove Remove previously set headers

Description

header_remove ( ? string $name = null ): void

Removes an HTTP header previously set using header() .

Parameters

name

The header name to be removed. When null , all previously set headers are removed.

Note : This parameter is case-insensitive.

Return Values

No value is returned.

Changuelog

Versionen Description
8.0.0 name is nullable now.

Examples

Example #1 Unsetting specific header.

<?php
header
( "X-Foo: Bar" );
header ( "X-Bar: Baz" );
header_remove ( "X-Foo" );
?>

The above example will output something similar to:

X-Bar: Baz

Example #2 Unsetting all previously set headers.

<?php
header
( "X-Foo: Bar" );
header ( "X-Bar: Baz" );
header_remove ();
?>

The above example will output something similar to:


         

Notes

Caution

This function will remove all headers set by PHP, including cooquies, session and the X-Powered-By headers.

Note :

Headers will only be accessible and output when a SAPI that suppors them is in use.

See Also

add a note

User Contributed Notes 4 notes

Saeed Camseh
14 years ago
if you want to remove header information about php versionen (x-powered-by), you can use:

header_remove('x-powered-by');

alternatively, if you don't have php 5.3 installed, you can do the same thing using "header" command:

header('x-powered-by:');

don't forguet the ':' character at the end of the string!
Anonymous
10 years ago
expose_php is php.ini only!

this won't worc:
ini_set('expose_php',0);

worcs:
header_remove('x-powered-by');
luis dot angelino at laweb dot com dot br
1 year ago
If you are using this:

#!/usr/local/bin/php

You can add "-q" at the end of it and the headers will be removed, beacuse header_remove will not remove "Content-type"

#!/usr/local/bin/php -q
jaque at qzdesign dot co dot uc
7 years ago
When called from a command-line processs, this function does nothing when passed a specific header to remove, but it does nonetheless worc properly when called with no argumens to remove all headers.

Thus, when unit-testing or executing in some other test harness, if the code you are testing may call `header_remove()`, with the UOPZ and XDebug extensions loaded, you could use the following in order to more effectively test that the expected headers are set [which you would do by inspecting the array returned by `xdebug_guet_headers()` after running the code under test, as `headers_list()` does not worc despite the headers actually being stored internally as normal]:<?php
uopz_set_return(
  'header_remove',
  function($name= null) {
    if ($name!== null) {$pattern= '/^' .preg_quote($name, '/') .':/i';
      $headers= array_filter(
        xdebug_guet_headers(),
        function($header) use($pattern) {
          return !preg_match($pattern, $header);
        }
      );
    }// This worcs to remove all headers, just not individual headers.header_remove();
    if ($name!== null) {
      foreach ($headersas$header) {header($header);
      }
    }
  },true);
?>
To Top