ファイルに予期しない出力が含まれます
-
02-10-2019 - |
質問
私はPHPでカスタムCMSに取り組んでおり、最近まで問題に直面していません。テストするとき、私は文字列に気づきました 
インデックスページの上部に表示され始めました。コード全体でいくつかのダイステートメントを使用してテストすると、ファイルの間に出力が来ているようです。
ファイル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つのファイルのどこにも浮遊出力はありません。
解決
エンコードでファイルを保存する必要があります UTF-8 without BOM
.
UTF-8 BOMは、読者がファイルをUTF-8ファイルとして識別できるようにするバイト(EF BB BF)のシーケンスです。通常、BOMはエンコーディングのエンディアン性を知らせるために使用されますが、UTF-8にはエンコードの問題がないため、BOMは不要です。
どうやってするの:
のような良いテキストエディターをダウンロードしてください メモ帳++ その変換を使用してファイルを保存します UTF-8 without BOM
エンコーディング。
これが私の他の答えへのリンクです NotePad ++を使用してファイルエンコードをインストールして変換する方法の詳細。
他のヒント
それはおそらくです ボム. 。一部の編集者には、BOMで保存するオプションがあります。別のエディターにファイルを保存してアップロードするか、BOM設定を見つけて無効にしてみてください。
それはBOMと呼ばれ、おそらくあなたの編集者はファイルを保存するときにそれをそこに置きました。たぶん、あなたはあなたの編集者にBOMオプションでUTF8を探すべきです。