私はPHPでカスタムCMSに取り組んでいますが、最近まで問題は発生していません。
テストしていると、文字列がインデックスページの上部にのみ表示され始めていることに気付きました。コード全体でいくつかのdieステートメントを使用してテストしたところ、出力はファイルインクルードの間にあるようです。
ファイルA
<?php
if (!defined('IN_CMS'))
{
exit;
}
require(INCLUDE_PATH . '/pages/homepage/main.php');
?>
ファイルB(含まれるファイル)
<?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');
?>
出力がどこから来ているのかわかりませんが、2つのファイルの間のどこかにあるようです。ob_start()
ファイルAのインクルード行の直前とインクルードファイルの最初に追加ob_end_clean()
しましたが、出力は表示されませんが、2つのファイルのどこにも漂遊出力はありません。