Warning: Cannot modify header information – headers already sent by ERROR
This error message we usually see, while doing php programming. Lets find out the main cause why this warning message occurs.
A web page consists two parts header and body. Some times when a programmer do mistake unintentionally then see such php errors –
Warning: Cannot modify header information - headers already sent by (output started at /some/file.php:12) in /some/file.php on line 23
This error comes when anything is sent before you send http header request. In simple words header should be sent before any body output.
<?php echo "Hello Gaurav"; // body // other out put header("Location:httop://......"); //header ?>
Above header should be sent before body output.
Sample http response –
HTTP/1.1200 OK Powered-By: PHP/5.3.7 Vary:Accept-Encoding Content-Type: text/html; charset=utf-8 <html><head><title>PHP page output page</title></head><body><h1>Content</h1> <p>Some more output follows...</p>
Php scripts generates html output and also pass header to the webserver. It has to pass header first before the output. When php send output(echo , print or html ) first then such error comes. You can find the error line in header warning itself.
Some other reasons are white space often at beginning and end of php tag.
See the space before beginning php tag. Always take care such simple things to avoid such mistakes.
The problem is that many editors seem to add additional blanks (spaces) and/or empty lines at the end of a file when you edit it. This so-called whitespace is then sent to the browser when the file is loaded and interferes with the header of a page.
There is another way –
Add <?php ob_start(); ?> at the top of page. and <?php ob_flush(); ?> at the end of code.
ob_start() – Its turning on the output buffer. So any output is kept in the buffer. And ob_flush() is to flush the buffer
`ob_start();` seldomly covers all error causes. It’s too late for UTF-8 BOMs commonly.
For a full explanation see http://stackoverflow.com/questions/8028957/how-to-fix-headers-already-sent-error-in-php