I've been working on a custom CMS in PHP and haven't run into any problems until recently. When testing, I've noticed that the string 
has started appearing at the top of only the index page. Testing with some die statements throughout the code, it seems the output is coming between a file include.
File A
<?php
if (!defined('IN_CMS'))
{
exit;
}
require(INCLUDE_PATH . '/pages/homepage/main.php');
?>
File B (Included File)
<?php
if (!defined('IN_CMS'))
{
exit;
}
$db->sql_query("SELECT * FROM `" . DB_PREFIX . "categories` active = 1");
$cats = $db->sql_results();
$categories = array();
foreach($cats as $cat)
{
$cat_info = array(
'name' => $cat['name'],
'description' => $cat['description'],
'image' => $setting['site_url'] . '/thumbnails/' . $cat['image'],
);
$categories[] = $cat_info;
}
include theme('index');
?>
I can't understand where the output is coming from, but it seems to be somewhere between the two files. I've added ob_start()
right before the include line in File A and ob_end_clean()
at the very beginning of the included file and the output does not show up, however there is no stray output anywhere in the two files.