حل مشکل Cannot modify header information

یکی از مشکلات و هشدارهایی (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 هستند. (منبع)

Bom چیست

Bom چیست

برای حل مشکل فوق در فایل های UTF-8 باید BOM را حذف کرد؛که در اینجا دو روش پیشنهاد می شود؛

اگر تعداد فایل هایی که این خطا را می دهند محدود و کم است می توانید نرم افزار Notepad++ را دانلود نمایید:

http://notepad-plus-plus.org/download/v6.7.html

سپس فایل PHP را به وسیله این ویرایشگر ویرایش کنید و از منو Encoding گزینه encode in utf-8 without out bom را انتخاب نمایید و فایل را ذخیره نمایید؛ بدین صورت کارکتر های BOM حذف شده و مشکل برطرف خواهد شد.

notepad++ without out bom

notepad++ without out bom

اما زمانی ممکن است تعداد فایل های شما بسیار زیاد باشد و ویرایش تک تک فایل ها وقت گیر باشد؛ به همین دلیل اسکریپتی را معرفی می کنیم که با یک کلیک تمامی فایل های داخل هاست را بررسی می کند و در صورت وجود BOM آن را حذف می نماید.

این اسکریپت ساده و کم حجم توسط Emrah Gunduz ساخته شده است bom.php نام دارد؛

bom.php without out bom

bom.php without out bom

دانلود فایل bom.php

منبع: سنترال هاستینگ

5 نظر برای “حل مشکل Cannot modify header information

  1. شهریار می‌گوید:

    درود بر شما ..برای من هم همین مشکل توی کد پی اچ پی (از مدیریت محتوا استفاده نمی کردم)..مشکل من بودن یک فاصله بعد از اتمام کد پی اچ پی در فایل کانفیگ سایتم بود که با حذف کردن این فاصله مشکل رفع شد…بعد از این کد ?> که انتهای دستور پی اچ پی هست نباید هیچ فاصله و چیز اینتری باشه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *