views:

42

answers:

3

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.

+6  A: 

You need to save the file with encoding UTF-8 without BOM.

The UTF-8 BOM is a sequence of bytes (EF BB BF) that allows the reader to identify the file as an UTF-8 file. Normally, the BOM is used to signal the endianness of the encoding, but since UTF-8 doesn't have any encoding issue, the BOM is unnecessary.

How to do it:

Download a good Text editor like Notepad++ and using that convert and save your file with the UTF-8 without BOM encoding.

Here's a link to my other answer detailing how to install and convert a file encoding using Notepad++.

shamittomar
Thanks. I am currently using Notepad++, just realized I accidentally changed my encoding.
Luke
You're welcome.
shamittomar
A: 

It's probably a BOM. Some editors have the options to save with a BOM. Try saving the file in a different editor and uploading it, or finding the bom setting and disabling it.

Galen
A: 

it's called BOM and probably your editor putted it there when saving the file. maybe you should look for a UTF8 WHITHOUT BOM option in your editor.

hugo_leonardo