آموزش

صفحه سفید وردپرس؛ تشخیص و رفع در ده دقیقه

راهنمای عملی رفع صفحه سفید وردپرس: فعال‌سازی WP_DEBUG، خواندن لاگ خطا، غیرفعال‌سازی افزونه بدون پیشخوان و یافتن مقصر اصلی.

آموزش

صفحه سفید وردپرس؛ وقتی سایت هیچ خطایی نشان نمی‌دهد

سایت را باز می‌کنی و فقط یک صفحه سفید می‌بینی. نه پیام خطای 500، نه متن خطا، نه هیچ چیز. مرورگر می‌گوید «اتصال برقرار شد» و بعد هیچ. این همان لحظه‌ای است که ضربان قلب هر مدیری بالا می‌رود، مخصوصاً اگر سایت فروشگاهی باشد و ساعت اوج ترافیک.

صفحه سفید وردپرس (WSOD) یعنی PHP در حال اجراست، اما قبل از تولید هر خروجی، خطای مرگباری رخ داده است. نمایش خطاها روی صفحه غیرفعال است، پس فقط یک صفحه خالی می‌بینی. خبر خوب این است که در ۹۰٪ موارد، مشکل از یک افزونه یا قالب تازه‌نصب‌شده است. خبر بد این است که برای پیدا کردنش باید ابزار درست را فعال کنی.

اولین قدم: فعال‌سازی WP_DEBUG از طریق wp-config.php

به فایل wp-config.php در ریشه نصب وردپرس دسترسی پیدا کن. این کار را از طریق FTP، فایل‌منیجر هاست یا SSH انجام بده. فایل را باز کن و دنبال خطی بگرد که شامل WP_DEBUG است. اگر وجود نداشت، این سه خط را دقیقاً قبل از عبارت /* That's all, stop editing! Happy publishing. */ اضافه کن:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

خط سوم را عمداً روی false گذاشتم. چرا؟ چون وقتی WP_DEBUG_DISPLAY فعال باشد، خطاها روی صفحه نمایش داده می‌شوند و ممکن است ساختار HTML سایت را بشکنند. ما خطاها را در فایل لاگ می‌خواهیم، نه روی صفحه.

حالا فایل را ذخیره کن و دوباره سایت را باز کن. اگر باز هم سفید بود، به فایل wp-content/debug.log برو. این فایل الان باید ساخته شده باشد. اگر ساخته نشده بود، یعنی خطا قبل از اجرای وردپرس رخ می‌دهد و مشکل جای دیگری است.

این‌جا اشتباه می‌کنند

خیلی‌ها فایل wp-config.php را با ویرایشگر ویندوز مثل Notepad باز می‌کنند و فایل را با encoding اشتباه ذخیره می‌کنند. نتیجه؟ خطای «headers already sent» یا یک صفحه سفید دیگر. از ویرایشگری استفاده کن که UTF-8 بدون BOM را حفظ کند. Notepad++ یا VS Code گزینه‌های مطمئنی هستند. اگر سایت بعد از ذخیره‌سازی فایل کلاً از کار افتاد، احتمالاً encoding فایل خراب شده است.

خواندن لاگ خطا؛ دنبال چه چیزی بگردیم

فایل debug.log را باز کن. دنبال آخرین خطا در انتهای فایل بگرد. یک خطای معمولی شبیه این است:

[12-Nov-2025 14:32:11 UTC] PHP Fatal error:  Uncaught Error: Call to undefined function wp_get_current_user() in /home/user/public_html/wp-content/plugins/some-plugin/functions.php:15

سه بخش مهم این خطا را جدا کن: نوع خطا (Fatal error)، پیام (Call to undefined function) و مسیر فایل مقصر (plugins/some-plugin/functions.php). مسیر فایل همان چیزی است که به تو می‌گوید مقصر کیست.

اگر مسیر به wp-content/plugins/ اشاره دارد، مشکل از افزونه است. اگر به wp-content/themes/ اشاره دارد، قالب مقصر است. اگر به فایل‌های هسته وردپرس اشاره دارد، احتمالاً فایل‌های هسته خراب شده‌اند یا با نسخه PHP سرور ناسازگارند.

غیرفعال‌سازی افزونه بدون دسترسی به پیشخوان

وقتی صفحه سفید است، پیشخوان وردپرس هم در دسترس نیست. پس باید از بیرون وارد شوی. ساده‌ترین راه: از طریق FTP یا فایل‌منیجر، به پوشه wp-content/plugins/ برو و نام پوشه افزونه‌ای را که مشکوک می‌دانی عوض کن. مثلاً woocommerce را به woocommerce-disabled تغییر بده. وردپرس وقتی افزونه‌ای را در مسیر پیش‌بینی‌شده پیدا نکند، آن را غیرفعال می‌کند.

اگر نمی‌دانی کدام افزونه مقصر است، کل پوشه plugins را به plugins-disabled تغییر نام بده. این کار همه افزونه‌ها را غیرفعال می‌کند. سایت را باز کن. اگر بالا آمد، یعنی مشکل از یکی از افزونه‌هاست. حالا پوشه را به نام اصلی برگردان و افزونه‌ها را یکی‌یکی با تغییر نام پوشه، غیرفعال و فعال کن تا مقصر را پیدا کنی.

این روش خام است اما کار می‌کند. وردپرس تنظیمات فعال بودن افزونه‌ها را در جدول wp_options دیتابیس نگه می‌دارد، نه در فایل‌ها. پس تغییر نام پوشه، وردپرس را مجبور می‌کند افزونه را «گم‌شده» فرض کند و آن را غیرفعال کند.

راه دوم: غیرفعال‌سازی از طریق phpMyAdmin

اگر به FTP دسترسی نداری اما phpMyAdmin داری، می‌توانی از آن طرف وارد شوی. به جدول wp_options برو و دنبال ردیفی بگرد که option_name آن active_plugins باشد. مقدار این ردیف یک آرایه سریالایز شده از افزونه‌های فعال است. مقدار را با این عبارت جایگزین کن:

a:0:{}

این یعنی «آرایه خالی». همه افزونه‌ها غیرفعال می‌شوند. اگر با مستندات و پایگاه دانش سرورنت آشنایی نداری، این کار را با احتیاط انجام بده. قبل از هر تغییری، یک بکاپ از دیتابیس بگیر. راهنمای کامل کار با phpMyAdmin را در این مقاله بخوان.

مقصر همیشه افزونه نیست؛ حافظه PHP را چک کن

یک سناریوی رایج دیگر: خطای Allowed memory size of 134217728 bytes exhausted. این یعنی اسکریپت به حافظه بیشتری از حد مجاز نیاز دارد. حد پیش‌فرض وردپرس 128M است که معادل 134217728 بایت است. برای سایت‌های سنگین با ووکامرس یا صفحه‌سازها، این مقدار کافی نیست.

برای افزایش حد حافظه، این خط را به wp-config.php اضافه کن:

define('WP_MEMORY_LIMIT', '256M');

اگر این کار جواب نداد، مشکل از تنظیمات PHP سرور است. مقدار memory_limit در فایل php.ini را چک کن. روی هاست لینوکس معمولاً می‌توانی این مقدار را از طریق پنل مدیریت تغییر دهی.

یک نکته مهم: افزایش بی‌نهایت حافظه راه‌حل نیست. اگر سایتی برای اجرای یک صفحه ساده به 512M حافظه نیاز دارد، جای دیگری مشکل دارد. معمولاً یک افزونه سنگین یا یک کوئری بهینه‌نشده دیتابیس مقصر است. حافظه را زیاد کن تا سایت بالا بیاید، اما بعد دنبال ریشه مشکل بگرد.

وقتی هیچ‌کدام جواب نمی‌دهد؛ خطای 500 و لاگ سرور

اگر بعد از همه این کارها صفحه هنوز سفید است، پای لاگ سرور را وسط بکش. در هاست‌های اشتراکی، فایل error_log معمولاً در ریشه public_html قرار دارد. در سرورهای مجازی، بسته به پیکربندی، می‌توانی از دستور زیر استفاده کنی:

tail -f /var/log/apache2/error.log

یا اگر nginx و PHP-FPM داری:

tail -f /var/log/nginx/error.log /var/log/php8.1-fpm.log

این لاگ‌ها خطاهایی را نشان می‌دهند که PHP نمی‌بیند: مشکلات دسترسی به فایل، خطاهای ناشی از timeout، یا مشکلات مربوط به opcache. یک خطای رایج این است که مالک فایل‌ها با کاربر اجراکننده PHP یکی نیست و خطای Permission denied می‌گیری.

بازگردانی به حالت قبل؛ آخرین راه

اگر سایت چند ساعت پیش کار می‌کرد و الان سفید است، و هیچ تغییری هم اعمال نکرده‌ای، احتمال حمله یا به‌روزرسانی خودکار وجود دارد. در این حالت، بهترین کار بازگردانی از آخرین بکاپ است. اگر بکاپ نداری، این درس را برای همیشه یاد می‌گیری: بکاپ گرفتن قبل از هر تغییر، نه بعد از فاجعه.

برای جلوگیری از تکرار این اتفاق، یک افزونه پایش آپتایم نصب کن که اگر سایت از دسترس خارج شد، به تو پیام بدهد. راهنمای عملی پایش آپتایم سایت را بخوان و یک هشدار ساده تنظیم کن. ده دقیقه وقت برای راه‌اندازی، جلوی یک شب بی‌خوابی را می‌گیرد.

پرسش‌های پرتکرار

چرا صفحه سفید وردپرس من خطای 500 نمی‌دهد؟

چون تنظیمات PHP روی سرور طوری است که نمایش خطاها غیرفعال است. وردپرس خطا را می‌بیند اما نمی‌تواند آن را نمایش دهد، بنابراین یک صفحه خالی تحویل مرورگر می‌دهد. فعال‌سازی WP_DEBUG و WP_DEBUG_LOG این خطا را در فایل debug.log ثبت می‌کند.

چطور بدون دسترسی به پیشخوان، افزونه‌ها را غیرفعال کنم؟

از طریق FTP یا فایل‌منیجر هاست، نام پوشه افزونه را در wp-content/plugins/ تغییر بده. وردپرس افزونه‌ای را که در مسیرش نیست غیرفعال فرض می‌کند. برای غیرفعال‌سازی همه افزونه‌ها، نام کل پوشه plugins را عوض کن.

فایل debug.log کجاست و چطور آن را پیدا کنم؟

بعد از فعال‌سازی WP_DEBUG_LOG، فایل debug.log در پوشه wp-content ساخته می‌شود. اگر ساخته نشد، مطمئن شو که پوشه wp-content قابل نوشتن است. معمولاً باید permission آن روی 755 یا 775 باشد.

آیا به‌روزرسانی وردپرس می‌تواند باعث صفحه سفید شود؟

بله. اگر افزونه‌ای با نسخه جدید وردپرس ناسازگار باشد، به‌روزرسانی خودکار می‌تواند سایت را از کار بیندازد. در این حالت، ابتدا همه افزونه‌ها را غیرفعال کن و بعد یکی‌یکی فعال کن تا افزونه ناسازگار را پیدا کنی. اگر سایت روی هاست وردپرس مدیریت‌شده باشد، معمولاً ابزارهایی برای بازگردانی سریع داری.

پشتیبانی سرورنت

تیم فنی و تحریریه‌ی سرورنت — تخصص در زیرساخت، شبکه و میزبانی وب.

هاست وردپرس
اشتراک‌گذاری:

دیدگاه‌ها ۰

هنوز دیدگاهی ثبت نشده؛ اولین نفر باشید!

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

سرویس مرتبط

هاست وردپرس

استک اختصاصی وردپرس با LiteSpeed Enterprise و NVMe — نصب خودکار، آپدیت امن، استیجینگ و کشی که سایت شما را در صدر نتایج گوگل نگه می‌دارد.