آموزش رفع خطای Cannot modify header information در وردپرس

سلام امروز قصدداریم به آموزش رفع خطای Cannot modify header information در وردپرس بپردازیم ، خطایی که معمولا فقط مختص به وردپرس نیست و در حالت های مختلفی به علت اسکریپت های مختلف پیش می آید پس اگر سایتی به غیر از وردپرس هم دارید همراه ما باشید تا روش بررسی خطای Cannot modify header information و آموزش رفع آن را یاد بگیرید.
خطای Cannot modify header information
این پیغام یک خطا نیست در واقع یک هشدار است و شکل واقعی و کامل این پیغام در سایت های مختلف به صورت زیر میباشد :
Warning: Cannot modify header information – headers already sent by (output started at /home/username/example.com/wp-content/themes/twentysixteen/functions.php:433) in /home/username/example.com/wp-includes/pluggable.php on line 1228
که به علت های مختلفی اتفاق می افتد از جمله :
- اشکال توی اینکودینک فایل ها
- بلاک های کدی که در فایل وجود دارد
- خط ها و فاصله های بسیار زیادی که در بین یک فایل وجود دارند
- فواصلی که در پایان و ابتدای شروع کد های php وجود دارند.
آموزش رفع خطای Cannot modify header information
برای بررسی و رفع این خطا در هر یک از حالت های بالا باید ابتدا به علت مشکل بپردازیم که خود خطای Cannot modify header information به ما آدرس دقیق را نشان میدهد پس اولین کار این است که خطای Cannot modify header information را بررسی کنیم. این خطا به ما دو خط کد و دو فایل را به ما نشان میدهد و در خطای زیر منظور از broken-file.php فایلی است که تمام این مشکلات را برای ما بوجود آورده و affected-file.php فایلی است که مشکل اصلی روی آن تاثیر گذاشته است.
Warning: Cannot modify header information – headers already sent by (output started at /path/to/broken-file.php:#) in /path/to/affected-file.php on line #
دو علامت # یا نامبرساین محل دقیق یا اطراف آن خطا را به ما نشان میدهد. اما خطای بالا فقط یک تست است تا به ما بفهماند که بخش های مختلف خطا چه پیغام هایی را به ما میرساند پس حال که متوجه بخش های مختلف خطا متوجه شدید بهتر است با یک خطای واقعی این مشکل را به اتمام برسانیم.
در خطای زیر منظور از ( some-functions.php:1 ) یعنی مشکل در فایل some-functions.php در خط اول است که در پوشه قالب (themes) سایت است.
Warning: Cannot modify header information – headers already sent by (output started at /home/user/public_html/wp-content/themes/yourtheme/some-functions.php:1) in /home/user/public_html/wp-includes/pluggable.php on line 765
خب حال که محل خطا را پیدا کردیم به رفع آن با دو روش میپردازیم.
قبل از این که کاری را انجام دهیم در ابتدا یک بکاپ میگیریم تا اگر مشکلی در سایت ما ایجاد شد آن را به حالت اول برگردانیم واطمینان حاصل کنید که encoding فایلی که مشکل برای آن ایجاد شده حتما روی UTF-8 تنظیم شده باشد. چرا که اینکوودینگ های دیگر از جمله ANSII و UTF-8-BOM میتوانند برای شما ایجاد کنند پس برای اطمینان از UTF-8 باید فایل را توسط یک ادیتور مانند Atom ، sublime یا notpad++ فایل را باز کنید و آن را بررسی کرده و سپس اگر encoding فایل صحیح نبود آن را با UTF-8 جایگذار کنید و سپس ذخیره نمایید.
اولین روش برای رفع خطای Cannot modify header information
اولین مرحله برای رفع خطا این است که باید مستقیما به سراغ فایل برویم که میتوانیم از طریق ادیتور هاست یا از طریق دانلود فایل و باز کردن آن در یک ادیتور حرفه ای این کار را انجام دهیم پس فایل را در ویرایشگر باز کنید و به دنبال فواصل خالی بگردید که معمولا در ابتدا یا انتهای کدphp قرار دارند و آن ها را پاک کنید. تگ های php به صورت زیر شروع و تمام میشوند ، پس دقت کنید که تا تگ پایانی را پیدا نکردید دنبال فواصل خالی بگردید و آن ها را پاک کنید سپس باید آن را ذخیره کنید.
<? php ?>
نکته : اگر فایل را دانلود و سپس ویرایش کردید آن را به هاست برگردانید.
دومین روش برای رفع خطای Cannot modify header information
دومین روش زمانی است که این مشکل در یکی از فایل های افزونه شما اتفاق افتاده است پس بهتر است این افزونه را با یک آپدیت جایگزین کنید یا در صورتی که آن را نیاز ندارید حذف و غیر فعال کرده.
آیا مشکل هنوز وجود دارد؟
اگر شما به رفع مشکل مانند رو های بالا پرداختید و این بار یک آدرس دیگر را به شما نشان میدهد باید دوباره مراحل را دوباره از نو انجام دهید چون مشکل قبلی حل شده و مشکل جدید هیچ ربطی به مشکل قبلی ندارد. و اگر ما به رفع مشکل پرداختید و باز هم همان ادرس ها را نان میدهد و هیچ تغییری اتفاق نیفتاده است مورد های زیر را چک کنید:
۱- خطای Cannot modify header information معمولا بخاطر بلاک های پشت سرهم در php رخ میدهد. پس فایل های خود را بررسی کنید که این بلاک ها در آن وجود نداشته باشد.
۲- اگرر فایل ها را ویرایش کردید و فواصل را پاک کردید آن ها را مجددا چک کنید و اطمینان حاصل کنید که اشتباهی کدی را پاک یا اضافه نکرده باشید.
۳- اگر برای ویرایش فایل ها بجای ویرایشگر های متنی کد از ورد :’) یا نرم افزار دیگری استفاده کردید احتمال آن وجود دارد که تغییراتی در آن رخ داده باشد.
امیدوارم این آموزش برای شما مفید بوده باشد با تشکر از همراهی شما-شاد باشید