


خطای (Cannot modify header information) چیست و چگونه رفع میشود؟
خطای Cannot modify header information، یکی از خطاهای معمول در php و وردپرس است که هنگام فراخوانی هدر به وجود می آید. در این مقاله به رفع این مشکل می پردازیم.
یکی از خطاهای بسیار معمول در وردپرس و اسکریپتهای گوناگون از جمله php که اکثرا با آن روبرو میشویم ارور Cannot modify header information است، در این مقاله قصد داریم به چگونگی و علت رخ دادن این ارور و همچنین آموزش رفع آن بپردازیم. با یادگیری این مقاله از آموزش php آموزش قادر خواهید بود در هر اسکریپتی که با این خطا مواجه شدید آن را برطرف کنید.
دلیل اتفاق افتادن خطای Cannot modify header information
اگرچه این عنوان را با نام خطا میشناسیم اما باید بدانید در واقع این مسئله یک هشدار است. شکل کامل آن به صورت زیر خواهد بود:
در حالت کلی اطلاعات سایت شامل دو بخش header و body یا محتوا است. در بخش header قبل از آدرس صفحه محتوای مورد نظر، اطلاعات کلی سایت قرار میگیرد. این اطلاعات شامل کوکیها، تنظیمات cache و تنظیمات امنیتی و امثال آن است. در واقع با توجه به این نکته که اطلاعات header باید قبل از محتوای اصلی سایت ارسال شود، در صورتی که ابتدا ارسال محتوا را انجام داده و سپس قصد تغییر در اطلاعات header داشته باشیم این ارور رخ خواهد داد.
دلایل دیگر رخ دادن این ارور
- یکی از دلایلی که باعث بروز این مسئله میگردد، وجود داشتن بیش از اندازه فاصله قبل از تگ شروع php، بعد از تگ پایانی و یا در میان این دو است.
- وجود بیش از اندازه فاصله یا خطهای خالی در قسمتهای بالا، پایین یا هر بخش خاصی از یک فایل نیز میتواند عامل بروز این خطا باشد.
- وجود مشکل در اینکودینگ فایلها نیز باید بررسی شود.
- وجود داشتن بلاکهای مختلف کد در فایل عامل دیگر بروز این خطا خواهد بود.
دوره پیشنهادی و مرتبط: دوره آموزش پروژه محور Php
رفع خطای Cannot modify header information
برای اینکه بتوانیم مشکل را اساسی بررسی و مرتفع کنیم بهتر است بدانیم که کدام فایل از برنامه دچار خطا شده است. برای این مسئله باید خطای کاملی که برای شما ارسال شده است را مطالعه کنید، معمولا در سینتکس اطلاعاتی که لازم دارید در اختیار شما قرار داده شده است. به مثال زیر توجه کنید.
این یک سینتکس کلی است که معمولا بعد از خطا نمایش داده میشود:
در این هشدار، آدرس دو فایل که خطا در آنها رخ داده است برایتان نمایش داده شده است، عبارت Broken نشاندهنده فایلی است که خطا در آن رخ داده، و علامت # نیز شماره خطی از کد برنامه را نشان میدهد که خطا در آن رخ داده است.
حال که متوجه شدهاید چگونه از قالب ارور مکان بروز خطا را بیابید به نحوه رفع مشکل اشاره میکنیم.
در اولین گام بهتر است از سایت یک بکآپ کامل گرفته شود، این یک کار امنیتی است و در صورتیکه در زمان انجام کار روی سایت دچار اشتباهی شوید، اطلاعات اولیه را در اختیار دارید تا بتوانید کار را از ابتدا آغاز کنید.
مقاله مرتبط: امنیت سایت های php
در ابتدا مطمئن شوید که encoding فایلی که خطا در آن رخ داده است روی فرمت UTF-8 تنظیم باشد، حتی اگر اینکودینگ فرمت دیگری داشت با کپی کردن آن روی یک ویرایشگر متنی مثل ++notepad میتوانید آن را با فرمت یاد شده ذخیره کنید و کار را آغاز نمایید.
روش اول رفع این خطا
از قسمت config برنامه ی زمپ، فایل php.ini رو باز کنید، داخل فایل php.ini بشید و داخل اون خط output_buffering = On رو در صورت وجود از حالت کامنت در بیارید و یا اگر نبود به صورت دستی وارد کنید سپس دوباره زمپ رو ریست کنید.
روش دوم رفع این خطا
در روش دوم، در ابتدا فایلی که خطا در آن رخ داده است را مییابیم و آن را جهت ویرایش باز میکنیم، این کار از طریق کنترل پنل صورت میگیرد، همچنین میتوانید فایل مورد نظر را دانلود کرده و در یک ویرایشگر متنی مثل نوتپد باز کنید. بعد از انجام این کار باید بررسی کنیم که در ابتدا یا انتهای برنامه فاصلههای اضافی وجود دارد یا خیر، حواستان باشد که ابتدا و انتهای تگ php را نیز از نظر فاصلههای خالی بررسی کنید.
بعد از این که فاصلههای اضافه را رفع کردید میتوانید فایل را ذخیره کرده و مجددا آپلود کنید. فرض بر این است که خطای رخ داده در یکی از فایلهای افزونههای سایت است، بنابراین باید افزونه را غیر فعال و حذف کرده و از یک پکیج جدید به نصب دوباره آن اقدام کنید. در صورتی که فایل دچار مشکل از فایلهای افزونه نیست، میتوانید فایل مشکل دار را پیدا کرده و حذف کنید و سپس یک نسخه جدید از آن را روی هاست آپلود کنید.
نکات مهم
- اگر با وجود اعمال تغییرات همچنان مشکل پا برجاست پیشنهاد میکنیم مراحل بالا را مجدد اجرا کرده و بررسی کنید که هنگام پاک کردن فاصلههای اضافه، به اشتباه کارکتری به کد اضافه نکرده باشید.
- دقت کنید که از یک ویرایشگر متنی مناسب برای حذف فاصلهها و خطوط اضافه استفاده کرده باشید، استفاده از ویرایشگرهای دیگری به جز notepad++ یا atom پیشنهاد نمیشود.
یک نکته امنیتی مهم نیز وجود دارد که باید به آن خیلی دقت کنید، برای اینکه اطلاعات فایلهای کدنویسی سایت شما در اختیار دیگران قرار نگیرد بهتر است نمایش خطا و هشدار را غیرفعال کنید، در این صورت از نمایش عمومی خطاها در سایت جلوگیری میشود و هشدارها در لاگ ذخیره شده و فقط ادمین سایت به آنها دسترسی خواهد داشت.