Troubleshooting the Headers Already Sent PHP Error
The Dreaded Headers Already Sent error message may appear on your page:


Put simply, the cause of the error is output on the page before the PHP session_start() or header() functions are used.
But how do you make it go away? the Key to fixing this issue is to look closely at the part in parentheses, this tells you where to look for the output:


this tells me to look at line 6 of the events_Results.php page.
In the first screen shot that I have attached, you can see that there is a closing PHP Tag (?>) at line 4. Line 5 is a blank line and line 6 is a new opening php tag (<?php).
it is the blank line at line 5 that is causing the error to occur.
If you dont see a blank line, it could be a blank space. In the second screen shot, I have enabled Hidden Characters (View -> Code View Options -> Hidden Characters), this shows line breaks and spaces in the code. This shows that line 4 has a closing PHP tag followed by a blank space before the line break. that blank space after the closing PHP Tag:
"?> "
Will cause the headers Already sent error as well.
Not just blank space, but actual text between php code blocks:
?>
hello world
<?php
or HTML comments:
<?
<!-- this is an html comment -->
<?php
can cause the error.
There are 2 other causes of the Headers already sent error besides output to the page. Look for these causes if the output is reported at line 1 in the error:
1) Using the virtual() function to include php files instead of require once:
<?php virtual('Connections/connEAF.php'); ?>
In Dreamweaver's site settings panel, the Local Info tab has a settings for "Links relative To" if you select Site Root (see the third screen shot), Dreamweaver will use the virtual() function for including files. You should set this to Document instead so that Dreamweaver will use the require_once() function.
2) The Unicode Signature (BOM) PHP bug. the forth screen shot shows the Title / Encoding category of the Page Properties screen (Modify - > Page Properties). Checking the Include Signature (BOM) option can cause the headers already sent error



