اگر یک مدیر سایت وردپرسی هستید، احتمالاً با چالشهای فنی مختلفی روبهرو شدهاید که ممکن است عملکرد سایت شما را تحت تأثیر قرار دهد. یکی از این مشکلات، خطای “کوکیها به خاطر خروجی غیرمنتظره مسدود هستند” است. این خطا نه تنها میتواند تجربه کاربران را مختل کند، بلکه بر روی افزونهها، قالبها و حتی روند ورود به سایت تأثیر بگذارد.
این پیام خطا معمولاً زمانی ظاهر میشود که وردپرس نمیتواند کوکیهای مورد نیاز را ارسال یا دریافت کند. در نتیجه، برخی از بخشهای سایت به درستی کار نمیکنند. دلایل این مشکل میتواند از خطاهای کوچک در کدنویسی گرفته تا مشکلات مربوط به افزونهها و تنظیمات سرور متغیر باشد.
در این مقاله، با رویکردی جامع به بررسی این خطا میپردازیم. ابتدا دلایل اصلی بروز آن را شناسایی میکنیم، سپس گامبهگام راهحلهای رفع مشکل را بررسی کرده و در نهایت، روشهای پیشگیری از وقوع این خطا را ارائه میدهیم. اگر شما هم با این خطا مواجه شدهاید یا میخواهید از بروز آن پیشگیری کنید، این مقاله دقیقاً برای شماست!
دلایل وقوع این خطا
1. خروجی غیرمنتظره در فایلهای PHP
یکی از رایجترین دلایل بروز این خطا، چاپ خروجیهای غیرمنتظره قبل از ارسال هدرها (headers) در فایلهای PHP است. به محض اینکه PHP در حال ارسال کوکیها است، نباید هیچ دادهای به مرورگر ارسال کند، زیرا این دادهها میتوانند باعث مختل شدن فرآیند ارسال کوکیها شوند.
2. مشکلات افزونهها یا قالب
برخی از افزونهها یا قالبها میتوانند با هم تداخل داشته باشند و باعث بروز مشکلاتی در ارسال یا ذخیرهسازی کوکیها شوند. این تداخلها ممکن است به دلیل کدهای ناسازگار، یا عملکردهای مشابه که توسط افزونهها انجام میشود، رخ دهند.
3. تنظیمات نادرست در فایل htaccess یا سرور
فایل .htaccess
یکی دیگر از منابع احتمالی بروز این خطا است. این فایل برای تنظیمات مسیرها، کش، ریدایرکتها و سایر تنظیمات سرور استفاده میشود و اگر بهدرستی پیکربندی نشود، میتواند باعث مشکلاتی در ارسال هدرها و کوکیها شود.
4. کش مرورگر یا کوکیهای خراب
کش مرورگرها میتوانند گاهی با کوکیها تداخل داشته باشند و باعث بروز خطاهای مشابه شوند. کش، دادهها را ذخیره میکند تا سرعت بارگذاری صفحات را افزایش دهد، اما اگر دادهها بهدرستی بارگذاری نشوند یا قدیمی باشند، ممکن است کوکیها بهدرستی ارسال یا دریافت نشوند.
5. تداخل افزونههای کش و بهینهسازی
افزونههای کش ممکن است با فرآیند تنظیم کوکیها تداخل داشته باشند.
روشهای رفع خطا
1. پاک کردن کش مرورگر و کوکیها
کش مرورگر یا کوکیهای خراب نیز میتوانند باعث این خطا شوند. برای رفع این مشکل:
طبق آموزش زیر وارد تنظیمات مرورگر خود شوید و کوکیها (Cookies) را پاک کنید.
پاک کردن کش مرورگرکروم:
(1)
(2)
پاک کردن کش مرورگر فایرفاکس:
(1)
(2)
2. غیرفعال کردن افزونهها و قالب
گاهی اوقات یک افزونه یا قالب مشکلساز باعث بروز این خطا میشود. برای شناسایی دقیق:
- غیرفعال کردن همه افزونهها:
وارد پیشخوان وردپرس شوید و تمام افزونهها را غیرفعال کنید. اگر دسترسی ندارید، به کمک فایل منیجر یا مدیریت فایل هاست، نام پوشهplugins
را تغییر دهید (مثلاً بهplugins_old
) تا همه افزونهها غیرفعال شوند یا میتوانید یک به یک نام پلاگین های داخل پوشه را تغییر دهید.
- فعال کردن افزونهها به صورت تکتک:
حالا یک به یک افزونهها را فعال کنید و پس از فعالسازی هر افزونه سایت را بررسی کنید تا افزونه مشکلساز شناسایی شود. - تغییر قالب به قالب پیشفرض:
قالب فعلی را به یکی از قالبهای پیشفرض وردپرس مثل twenty twenty five تغییر دهید و بررسی کنید آیا مشکل برطرف میشود یا خیر.
3. حذف خروجیهای غیرضروری از فایلهای PHP
این خطا اغلب به دلیل خروجیهای غیرمنتظره در فایلهای PHP سایت رخ میدهد. هر چیزی که پیش از ارسال هدر (headers) توسط PHP چاپ شود، مثل فاصله، متن، یا حتی خط خالی، میتواند مشکلساز شود. برای رفع این مشکل:
- بررسی فایل functions.php:
در تصویر زیر مسیر فایل functions.php قالب twenty twenty five را نشان میدهد.
- مانند تصویر بالا فایل
functions.php
قالب خود را باز کنید و کد زیر را در انتهای فایل پیست کنید.
//fix for cookie error while login.
function set_wp_test_cookie() {
setcookie(TEST_COOKIE, 'WP Cookie check', 0, COOKIEPATH, COOKIE_DOMAIN);
if ( SITECOOKIEPATH != COOKIEPATH )
setcookie(TEST_COOKIE, 'WP Cookie check', 0, SITECOOKIEPATH, COOKIE_DOMAIN);
}
add_action( 'after_setup_theme', 'set_wp_test_cookie', 101 );
همچنین اطمینان حاصل کنید که هیچ خط خالی یا فاصلهای پیش از شروع یا بعد از پایان تگ PHP وجود ندارد.
- مثال صحیح:
<?php
// کدهای شما
?>
- مثال اشتباه:
<?php
// کدهای شما
?>
<!-- فاصله اضافی -->
4. بازنشانی فایل htaccess
فایل .htaccess
نقش مهمی در عملکرد سایت ایفا میکند. اگر این فایل خراب یا نادرست پیکربندی شده باشد، میتواند مشکلاتی از جمله خطای کوکیها ایجاد کند.این فایل در پوشه public html وجود دارد.
- ساخت نسخه پشتیبان:
از فایل.htaccess
فعلی یک نسخه پشتیبان تهیه کنید. - بازنویسی به تنظیمات پیشفرض:
فایل را با محتوای پیشفرض زیر جایگزین کنید:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
5. پاک کردن کش افزونهها و تنظیمات آنها
افزونههای کش ممکن است روی کوکیها تأثیر بگذارند. برای رفع مشکل:
- پاک کردن کش افزونه:
وارد تنظیمات افزونه شوید و گزینه پاک کردن کش (Clear Cache) را انتخاب کنید. - غیرفعال کردن تنظیمات پیشرفته کش:
برخی تنظیمات مثل “Minify” یا “Combine CSS and JS” میتوانند باعث اختلال شوند. این گزینهها را غیرفعال کنید و سایت را بررسی کنید.
6. بهروزرسانی نسخه PHP و وردپرس
نسخههای قدیمی PHP یا وردپرس ممکن است با مشکلات سازگاری همراه باشند.
- اطمینان حاصل کنید که سایت شما از نسخه حداقل PHP 7.4 یا بالاتر استفاده میکند.
- وردپرس و افزونههای نصبشده را به آخرین نسخه بهروزرسانی کنید.
7. فعال کردن حالت دیباگ در وردپرس
حالت دیباگ ابزار بسیار مفیدی برای شناسایی خطاهای مخفی است. برای فعال کردن این حالت:
فایل wp-config.php
را باز کنید.
مطمئن شوید کدهای زیر در آن وجود دارند:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
حالا به پوشه wp-content
بروید و فایل debug.log
را بررسی کنید. این فایل شامل خطاهای ثبتشده است که میتوانند به شناسایی علت اصلی کمک کنند.
پیشنهاد برای شما : افزایش حجم آپلود در وردپرس
راهکارهای پیشگیری از خطا
1. بهینهسازی و اعتبارسنجی کدها:
اطمینان حاصل کنید که کدهای PHP و جاوااسکریپت مورد استفاده در سایت کاملاً استاندارد و معتبر هستند. ابزارهایی مانند PHP CodeSniffer میتوانند در شناسایی خطاهای کدنویسی کمک کنند.
2. بروزرسانی منظم سیستم و افزونهها:
هرگز نسخههای قدیمی وردپرس، افزونهها و قالبها را استفاده نکنید. بهروزرسانیها معمولاً مشکلات امنیتی و باگهای موجود را برطرف میکنند.
3. بررسی دقیق افزونههای کش:
افزونههای کش نظیر W3 Total Cache یا WP Super Cache میتوانند باعث تداخل در تنظیمات کوکی شوند. از پیکربندی درست آنها اطمینان حاصل کنید و هرگونه تغییر را در محیط آزمایشی بررسی کنید.
4. فعال کردن ابزارهای مانیتورینگ:
ابزارهایی مثل New Relic میتوانند برای نظارت بر سایت و شناسایی زودهنگام مشکلات بسیار مفید باشند.
5. ایجاد تست خودکار برای خطاهای رایج:
با استفاده از افزونههایی مانند Query Monitor، میتوانید خطاهای بالقوه را پیش از تأثیرگذاری بر کاربران شناسایی کنید.
6. بررسی فایلهای پیکربندی سرور:
تنظیمات فایلهایی مانند htaccess. و PHP.ini را بررسی کنید تا از سازگاری کامل با کوکیها مطمئن شوید.
در آخر…
خطای “کوکیها به خاطر خروجی غیرمنتظره مسدود هستند” ممکن است در نگاه اول پیچیده به نظر برسد، اما با بررسی دقیق و استفاده از روشهای مطرحشده، بهراحتی قابل رفع است. علاوه بر این، پیشگیری از بروز چنین مشکلاتی میتواند تجربه کاربری بهتری را برای بازدیدکنندگان سایت شما فراهم کند.
اگر این مقاله برای شما مفید بود، پیشنهاد میکنیم دیگر مقالات آموزشی ما را نیز مطالعه کنید. در آنها به بررسی سایر خطاهای رایج وردپرس و روشهای رفع آنها پرداختهایم. همچنین اگر سؤالی دارید یا به مشکلی برخورد کردهاید، حتماً در بخش نظرات با ما در میان بگذارید.
برای یادگیری بیشتر و حل مشکلات وردپرس، همین حالا به مقالات سایت ما سر بزنید و از مطالب متنوع بهرهمند شوید!