اکثر پیامهای خطای وردپرس به شما ایده میدهند که چه چیزی باعث ایجاد مشکل در سایت میشود. ارور cannot modify header information – headers already sent by در وردپرس از این قاعده مستثنی نیست. اگر فایل PHP به دلیل مشکل در کد آن قابل اجرا نباشد، با این پیغام مواجه خواهید شد. در ادامه با وبلاگ پارس وی اس با ما همراه باشید.
دلایل مختلفی برای نمایش خطای “Cannot modify header information” وجود دارد. خوشبختانه خود پیام به شما میگوید که کدام فایل مشکل را ایجاد کرده است. حتی به خط کدی که حاوی مشکل است اشاره میکند. در این مقاله قصد داریم به بررسی این خطا و دلایل آن بپردازیم. در نهایت دو روش مناسب برای حل این مشکل ارائه میدهیم.
همانطور که قبلا ذکر کردیم، زمانی که یکی از فایل های php سایت شما اجرا نشود، با این خطا مواجه خواهید شد. فایلهای php مانند wp-config.php و functions.php از جمله مهمترین فایلهایی هستند که وردپرس به آنها متکی است و وجود هر گونه نقص و خطا در این فایلها باعث به وجود آمدن خطاهای دیگری میشود. اگر مشکلی در یکی از فایلهای php وجود داشته باشد که وبسایت شما باید آن را بارگیری کند، یک پیام خطایی به شکل زیر مشاهده میکنید:
Warning: Cannot modify header information - headers already sent by (output started at /home/public_html/wp-config.php:#) in /home/public_html/wp-includes/file-example.php on line 33
خوشبختانه، خطای «Cannot Modify Header Information – Headers Already Sent By» اطلاعات زیادی را ارائه میدهد که با توجه به آن عیبیابی راحتتر میشود. این پیام شما را به سمت دو فایل راهنمایی میکند. اولی حاوی مشکل است که از اجرای دومی جلوگیری میکند. در پایان پیغام خطا، بخشی را مشاهده خواهید کرد که می گوید “خط X” باعث ایجاد مشکل شده است.
معمولاً مشکل کدهای PHP به راحتی قابل حل است. برخی از دلایل رایجی که میتوانند باعث نمایش این خطا شوند، عبارتند از:
- وجود فضاهای خالی قبل از تگ باز و بسته <?php?>
- وجود یک بلوک HTML قبل از تابع Headers PHP
- وجود Print یا echo عباراتی که قبل از تابع Headers PHP هستند.
- مشکل با کدهای یک افزونه
رفع این نوع خطاها مستلزم آن است که با زبان PHP آشنایی داشته باشید و بتوانید کدها را تغییر دهید.
نحوه عیب یابی خطای ” Cannot Modify Header Information – Headers Already Sent By”
دو روش برای عیب یابی خطای « Cannot Modify Header Information – Headers Already Sent By» وجود دارد. روش اول نیازی به خروج از داشبورد وردپرس ندارد، اما اگر نمیتوانید به داشبورد دسترسی داشته باشید یا از وردپرس استفاده کنید، نگران نباشید، روش دوم از FTP/SFTP استفاده میکند که در انتها به آن خواهیم پرداخت.
روش اول حل خطای Cannot Modify Header Information
- با استفاده از ویرایشگر پیشخوان وردپرس میتوانید خطا را برطرف کنید.
اولین کاری که باید هنگام مواجه شدن با خطای « Cannot Modify Header Information – Headers Already Sent By » انجام دهید، باز کردن فایلی است که باعث ایجاد مشکل شده است. سپس، خطی را که پیام نشان میدهد، پیدا کنید.
به عنوان مثال، اگر خطایی مانند خطای زیر را مشاهده کردید، به این معنی است که باید داخل فایل functions.php قالب خود را بررسی کنید:
Warning: Cannot modify header information - headers already sent by (output started at /home/public_html/wp-content/themes/twentytwentyone/functions.php:#) in /home/public_html/wp-includes/file-example.php on line 1
در این سناریو، میتوانید با استفاده از ویرایشگر قالب وردپرس به علت مشکل برسید. برای دسترسی به آن، به Appearance > Theme Editor قالب بروید. هنگامی که وارد شدید، از منوی سمت راست استفاده کنید تا فایل مورد نیاز برای دسترسی را انتخاب کنید.
اگر به دقت نگاه کنید، چندین فضای خالی قبل از تگ <?php مشاهده خواهید کرد. پیام خطا به خط شماره یک اشاره میکند. بنابراین، به شما میگوید که فضاهای سفید علت مشکل هستند. در این مثال، تنها کاری که باید انجام دهید این است که فضاهای خالی را حذف کرده و روی Update File کلیک کنید.
اکنون وب سایت خود را مجدداً بارگیری کنید و خطا برطرف میشود. میتوانید همین فرآیند را با استفاده از ویرایشگر افزونه وردپرس ( افزونهها > ویرایشگر افزونه ) اعمال کنید. این روش در صورتی قابل اجرا است که پیام خطا به فایل پلاگین معیوب اشاره داشته باشد. از طرف دیگر، ممکن است با خطایی مواجه شوید که یکی از فایلهای موجود در فهرست افزونههای وردپرس شما را نشان میدهد.
در این سناریو میتوانید آن افزونه را حذف و دوباره نصب کنید. در بیشتر موارد، این موضوع را برای شما حل میکند. با این حال، به خاطر داشته باشید که بسته به ابزاری که استفاده میکنید، ممکن است تنظیمات سفارشی سازی شده افزونه را از دست بدهید. به این ترتیب، ممکن است لازم باشد افزونه را دوباره راه اندازی کنید.
2. فایل را از طریق FTP/SFTP ویرایش کنید
در برخی موارد، منبع خطای «cannot Modify Header Information – Headers Already Sent By» در فایلی نیست که میتوانید با استفاده از قالب وردپرس یا ویرایشگرهای افزونه به آن دسترسی داشته باشید. از طرف دیگر، ممکن است از یک سایت غیر وردپرس استفاده کنید.
در این سناریوها، بهترین گزینه شما دسترسی به فایل مشکل با استفاده از FTP/SFTP است. برای انجام این کار، باید از یک سرویس گیرنده FTP یا SFTP مانند نرم افزار FileZilla استفاده کنید. همچنین باید به اعتبارنامه FTP/SFTP وب سایت خود دسترسی داشته باشید. در بیشتر موارد، شما باید بتوانید آنها را در پنل هاستینگ خود پیدا کنید.
پس از دریافت اعتبارنامه، از سرویس گیرنده FTP یا SFTP خود برای اتصال به وب سایت خود استفاده کنید. شما باید پوشه روت سایت را پیدا کنید. معمولاً نام آن باید root، public_html ،public یا نام سایت خودتان باشد.
در اینجا نگاهی گذرا به داخل پوشه root وردپرس بیاندازید تا فایلی را که خطای «cannot Modify Header Information – Headers Already Sent By» را دارد بیابید. به عنوان مثال، اگر در public/wp-config.php، مشکل وجود دارد، روی فایل کلیک راست کرده و گزینه View/Edit را انتخاب کنید.
این گزینه فایل انتخابی را با استفاده از ویرایشگر متن پیش فرض شما باز میکند. پس از باز شدن سند، با پیمایش به خطی که پیام خطا به شما نشان داده است، مشکل را پیدا کنید.
اگر نمیتوانید خطا را تشخیص دهید، ممکن است لازم باشد با یک پشتیبان وردپرس آشنا با PHP مشورت کنید. با این حال، فرض کنید با یک مشکل فضای خالی یا یک عبارت قبل از هدر PHP روبرو هستید. در این صورت باید بتوانید خودتان مشکل را برطرف کنید.
پس از اتمام کار، تغییرات را در فایل ذخیره کنید و صفحه FTP/SFTP را ببندید. سعی کنید دوباره سایت خود را تست کنید. چرا که باید خطا رفع شده باشد.
نتیجه گیری
خطای ” Cannot Modify Header Information – Headers Already Sent By” میتواند بسیار چالش برانگیز و پر استرس باشد چون یک پیام طولانی را ارائه میدهد. با این حال، این پیام خطای دقیق، عیب یابی این اشکال را نسبتاً ساده میکند.
برخلاف سایر مشکلات، این خطا قادر است به شما بگوید کدام فایل باعث ایجاد آن شده است و کدام خط کد را باید بررسی کنید. بسته به فایلی که باعث بروز خطا شده است، دو راه برای عیب یابی آن وجود دارد:
- با استفاده از ویرایشگر افزونه میتوانید خطا را برطرف کنید یا یک افزونه را جایگزین کنید.
- فایل حاوی مشکل را شناسایی نموده و از طریق FTP/SFTP ویرایش کنید.
یافتن علت بروز این خطا ساده است. با این حال، اگر با PHP آشنایی ندارید، رفع آن می تواند مشکل ساز باشد. از همراهی شما در این مقاله از پارس وی دی اس متشکریم. در صورت وجود هر گونه سوال و ابهام میتوانید با درج کامنت با ما در تماس باشید.