If you include a file with their include() function and have whitespace after the closing ?> tag in the file--PHP will throw an error.
Except it gets better: whether this happens or not depends on a setting in php.ini (output buffering I think).
This happens if you're trying to send header information from the parent file but include a file that outputs whitespace on accident. The output buffering delays sending the output (because it's buffered, duh :)) so the header info can be sent, hence no error.
This is one of those things I didn't know and wish I did.
http://stackoverflow.com/questions/1793482/php-error-cannot-...
The work around: omit the closing ?> tag from included files.