یکی از مشکلات و هشدارهایی (warning) که خیلی ها در php با آن مواجه هستند Warning معروف زیر است :
Warning: Cannot modify header information – headers already sent by (output started at /…………….) in ……….php on line ….
این مشکل اکثرا زمانی رخ می دهد که یک فایل PHP با یونیکد UTF-8 دارای کارکتر های BOM باشد. اما BOM چیست و آیا در یک ویرایشگر ساده قابل نمایش است؟ جهت حل مشکل Cannot modify header information چه کاری باید انجام داد؟
BOM یا Byte Order Mark ترکیبی است از چند نویسهی ویژه که قرارگیری آن در ابتدای یک فایل متنی، نوع کدگذاری نویسههای موجود در آن فایل را مشخص میکند. BOM بخشی از متن فایل به حساب نمیآید و وجود آن تنها برای رفع ابهام از نوع و شیوهی کدگذاری نویسههای یک فایلی متنی ضروری است.
با توجه به اینکه سیستم UTF-8 برای رفع مشکل سازگاری یونیکد با سیستم ASCII توسعه یافته است، در بیشتر مواقع از درج BOM مخصوص به UTF-8 در ابتدای فایلها خودداری میشود. زیرا این علامت میتواند باعث ایجاد سردرگمی برای ویرایشگرها و کامپایلرهایی شود که آن را نمیشناسند.
عبارتهای UTF-8 Without BOM، UTF-8 w/o BOM یا به طور ضمنی UTF-8 که در ویرایشگرهای متنی به نمایش درمیآیند، نشاندهندهی عدم وجود BOM در ابتدای فایل UTF-8 هستند. (منبع)
برای حل مشکل فوق در فایل های UTF-8 باید BOM را حذف کرد؛که در اینجا دو روش پیشنهاد می شود؛