Cannot Modify Header Information – Headers Already Sent


Title: “Cannot Modify Header Information – Headers Already Sent” in PHP: Causes and Fixes

Meta Description:
Getting the “Cannot modify header information – headers already sent” error in PHP or WordPress? Learn what causes it, how to fix it, and how to prevent it in the future.


Introduction

If you’ve worked with PHP or WordPress, you might have encountered the error:

“Warning: Cannot modify header information – headers already sent by (output started at…)”

This warning often confuses beginners, but it’s a common issue related to how headers and output are handled in PHP.

In this article, we’ll explain:

  • What does this error mean
  • Why it occurs
  • How to fix it
  • Best practices to avoid it

What Does “Cannot Modify Header Information – Headers Already Sent” Mean?

In PHP, headers (like redirection or setting cookies) must be sent before any actual output (HTML, whitespace, or even an extra line).

If your code sends output before a header() A function or similar command, PHP throws this error, because headers must come first in the response.


  1. Whitespace Before <?php or After ?>
    • Even a blank space before <?php or after ?> can trigger the error.
  2. Echo/Print Statements Before Headers
    • Outputting content before using header("Location: ...") will cause this warning.
  3. Included Files with Output
    • Files included via include or require might output whitespace or text accidentally.
  4. UTF-8 BOM
    • Some text editors (like Notepad) add a Byte Order Mark (BOM) that’s invisible but treated as output.
  5. HTML Before Header Call
    • Any direct HTML before your header() function causes this issue.

Common Causes


Example Error

Warning: Cannot modify header information - headers already sent by (output started at /path/to/file.php:10)

This means output started on line 10 of file.php, and a header() function was attempted afterward.


How to Fix “Headers Already Sent” Error

✅ 1. Remove Whitespace

  • Make sure there’s no space before <?php and after ?>
<?php
// Correct
header("Location: login.php");
exit;
?>

Avoid this:

 ?> // <- whitespace here will cause an error

✅ 2. Use Output Buffering (Optional)

Enable output buffering so PHP stores output before sending it:

ob_start();
header("Location: login.php");
exit;
ob_end_flush();

✅ 3. Check Included Files

Inspect include, require, require_once files to ensure no output is present.

✅ 4. Remove UTF-8 BOM

Use a proper editor (like VS Code, Sublime Text, or Notepad++) and save files without BOM.

✅ 5. Move Header Before Output

Ensure header() calls appear before any echo, HTML, or print:

header("Location: dashboard.php");
exit;
echo "Redirecting..."; // This will now work fine

How to Prevent This Error in the Future

  • Always start files with <?php (no whitespace before it).
  • Avoid using ?> at the end of PHP-only files.
  • Use tools like PHP Code Sniffer to catch formatting issues.
  • Use IDEs or editors that highlight whitespace and BOM issues.

Cannot Modify Header Information – Headers Already Sent
Cannot Modify Header Information – Headers Already Sent

In WordPress?

You might see this in WordPress if a plugin or theme has unwanted output before modifying headers. Look for:

  • Extra spaces in functions.php
  • echo statements before wp_redirect() or setcookie()

Final Thoughts

The “Cannot modify header information – headers already sent” error is frustrating, but easy to fix once you understand PHP’s output rules. Check for whitespace, output before headers, or BOM characters, and follow good development practices to prevent it from occurring.


Target SEO Keywords:

  • Cannot modify header information, headers already sent
  • PHP headers already sent error
  • How to fix header already sent error
  • WordPress headers already sent solution
  • PHP header location error fix

How to Open Control Panel