تشمل الإخراج غير المتوقع في الملف
-
02-10-2019 - |
سؤال
لقد كنت أعمل على CMS مخصص في PHP ولم أواجه أي مشاكل حتى وقت قريب. عند الاختبار ، لاحظت أن السلسلة 
بدأت تظهر في الجزء العلوي من صفحة الفهرس فقط. الاختبار مع بعض عبارات الموت في جميع أنحاء الكود ، يبدو أن الإخراج يأتي بين ملف يتضمن.
ملف
<?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');
?>
لا أستطيع أن أفهم من أين يأتي الإخراج ، لكن يبدو أنه في مكان ما بين الملفتين. لقد اضفت ob_start()
مباشرة قبل خط تضمين في الملف A و ob_end_clean()
في بداية الملف المضمّن ، لا يظهر الإخراج ، ومع ذلك لا يوجد إخراج طائش في أي مكان في الملفتين.
المحلول
تحتاج إلى حفظ الملف مع الترميز UTF-8 without BOM
.
UTF-8 BOM هو تسلسل للبايت (EF BB BF) يسمح للقارئ بتحديد الملف كملف UTF-8. عادةً ما يتم استخدام BOM للإشارة إلى Endianness للترميز ، ولكن نظرًا لأن UTF-8 ليس لديه أي مشكلة ترميز ، فإن BOM غير ضروري.
كيف افعلها:
قم بتنزيل محرر نص جيد مثل المفكرة ++ واستخدام هذا التحويل وحفظ الملف الخاص بك مع UTF-8 without BOM
التشفير.
إليك رابط لإجابتي الأخرى تفصيل كيفية تثبيت ملف وتحويله باستخدام Notepad ++.
نصائح أخرى
ربما يكون أ بوم. بعض المحررين لديهم خيارات لتوفير مع BOM. حاول حفظ الملف في محرر مختلف وتحميله ، أو العثور على إعداد BOM وتعطيله.
يطلق عليه Bom وربما وضعه المحرر هناك عند حفظ الملف. ربما يجب أن تبحث عن خيار UTF8 Whithout BOM في المحرر الخاص بك.