23
فروردینچگونه خطای صفحه سفید مرگ (White Screen of Death) را در وردپرس برطرف کنیم ؟
خطای صفحه سفید مرگ (WSoD) یکی از جدیترین مشکلات وردپرس است که نیاز به اقدام فوری دارد. در این راهنما، روشهای حرفهای برای تشخیص و رفع این مشکل را ارائه میدهیم:
وقتی با خطای صفحه سفید مرگ مواجه میشوید، فعالسازی حالت دیباگ اولین و مهمترین اقدامی است که باید انجام دهید. این روش به شما کمک میکند تا ریشه مشکل را شناسایی کنید.
از طریق FTP/File Manager به فایل wp-config.php
در ریشه وردپرس دسترسی پیدا کنید
قبل از خط /* That's all, stop editing! Happy blogging. */
کدهای زیر را اضافه یا ویرایش کنید:
// فعالسازی گزارشدهی خطاها
define('WP_DEBUG', true);
// ذخیره خطاها در فایل لاگ (بدون نمایش به کاربران)
define('WP_DEBUG_LOG', true);
// عدم نمایش خطاها به کاربران (امنیت بیشتر)
define('WP_DEBUG_DISPLAY', false);
// فعالسازی دیباگ برای اسکریپتها و استایلها
define('SCRIPT_DEBUG', true);
فایل را ذخیره و آپلود کنید
خطاها در فایل /wp-content/debug.log
ذخیره میشوند
برای مشاهده خطاها:
از FTP به پوشه wp-content بروید
فایل debug.log را دانلود و بررسی کنید
به دنبال خطاهای “Fatal Error” یا “Parse Error” بگردید
امنیت: بعد از رفع مشکل حتماً دیباگ را غیرفعال کنید:
define('WP_DEBUG', false);
حجم لاگ فایل: فایل debug.log ممکن است بزرگ شود، به طور منظم آن را بررسی و پاک کنید
خطاهای رایج که ممکن است در لاگ ببینید:
خطاهای حافظه (Memory Exhausted)
مشکلات افزونهها یا پوسته
خطاهای syntax در فایلهای PHP
برای کاربران پیشرفته:
میتوانید خطاها را به ایمیل ارسال کنید:
@ini_set('log_errors', 'On');
@ini_set('error_log', '/path/to/your/php-errors.log');
این روش معمولاً در 60% موارد صفحه سفید مرگ، به شما کمک میکند دقیقاً تشخیص دهید مشکل از کجاست و بر اساس آن اقدامات بعدی را انجام دهید.
// در wp-config.php این خط را اضافه کنید
define('WP_MEMORY_LIMIT', '512M');
@ini_set('memory_limit', '512M');
مانیتورینگ عملکرد افزونهها: از افزونههایی مانند Query Monitor استفاده کنید تا بتوانید افزونههایی که باعث کاهش سرعت سایت میشوند را شناسایی کنید.
بهروزرسانی منظم افزونهها: همیشه افزونهها را به آخرین نسخه ارتقا دهید تا از مشکلات امنیتی و باگها جلوگیری کنید.
استفاده از افزونههای چند منظوره: افزونههایی مانند Jetpack ویژگیهای متنوعی مانند امنیت، آمار، بکاپ و بهینهسازی را ارائه میدهند.
غیرفعال کردن افزونههای غیرفعالشده: اگر افزونهای غیرفعال است اما هنوز نصب شده، آن را حذف کنید تا از اشغال منابع سرور جلوگیری شود.
ارزیابی افزونههای خارجی قبل از نصب: همیشه قبل از نصب یک افزونه، بررسی کنید که آیا سازنده آن معتبر است و افزونه مورد نظر دارای امتیازات و نظرات مثبت کاربران میباشد.
راهاندازی تست محیطی: پیش از نصب یا بهروزرسانی افزونهها، آنها را در یک محیط آزمایشی بررسی کنید تا مطمئن شوید که با سایت شما سازگارند.
جلوگیری از تداخل افزونهها: اگر دو افزونه کار مشابهی انجام میدهند، یکی از آنها را غیرفعال کنید تا از مشکلات تداخل جلوگیری شود.
مانیتور کردن خطاهای افزونهها با ابزارهای حرفهای: از افزونههایی مانند WP Debugging استفاده کنید تا بتوانید مشکلات افزونهها را بهسرعت شناسایی و رفع کنید.
انتخاب افزونههای سبک: افزونههایی را انتخاب کنید که منابع کمی مصرف میکنند و باعث کاهش عملکرد سایت نمیشوند.
استفاده از ابزارهای بهینهسازی پایگاه داده: افزونههایی مانند WP-Optimize میتوانند پایگاه داده سایت را بهینه کرده و سرعت عملکرد افزونهها را افزایش دهند.
ایجاد مستندات داخلی: برای افزونههای پیچیده یا سفارشی، مستندات داخلی تهیه کنید تا مدیریت آنها در آینده آسانتر شود.
استفاده از خدمات مدیریت افزونهها: خدماتی مانند ManageWP به شما امکان مدیریت افزونهها و سایتهای وردپرسی را در یک داشبورد واحد میدهد.
گزارشدهی عملکرد: افزونههایی مانند Activity Log به شما امکان میدهند که تغییرات و عملکرد افزونهها را زیر نظر داشته باشید.
وقتی با خطای صفحه سفید مرگ مواجه میشوید، بررسی پوسته یکی از حیاتیترین مراحل عیبیابی است. در اینجا روشهای حرفهای برای تشخیص و رفع مشکلات مربوط به پوسته را ارائه میدهیم:
ایزولهسازی کامل پوسته:
از طریق FTP به /wp-content/themes/
بروید
یک پوشه جدید به نام _inactive_themes
ایجاد کنید
تمام پوستهها به جز twentytwentyfour
را به این پوشه منتقل کنید
این کار سیستم را مجبور به استفاده از پوسته پیشفرض میکند
بررسی فایلهای اصلی پوسته:
functions.php
: خط به خط بررسی کنید (مخصوصاً توابع سفارشی)
style.css
: اطمینان از صحت اطلاعات هدر
index.php
: بررسی ساختار پایه
تست حافظه پوسته:
// در ابتدای functions.php این کد را اضافه کنید
echo 'Memory Limit: ' . ini_get('memory_limit');
die();
لاگگیری اختصاصی:
// در functions.php قبل از هر کدی اضافه کنید
file_put_contents(__DIR__.'/theme_errors.log',
'Theme loaded: '.date('Y-m-d H:i:s').PHP_EOL,
FILE_APPEND);
بررسی conflictهای جاوااسکریپت:
در فایل footer.php
تمام اسکریپتها را موقتاً حذف کنید
به تدریج اسکریپتها را برگردانید تا عامل مشکل پیدا شود
آزمایش توابع سفارشی:
// در functions.php
remove_all_actions('after_setup_theme');
remove_all_actions('init');
remove_all_actions('wp_loaded');
بررسی وابستگیها:
آیا پوسته به افزونههای خاصی وابسته است؟
نسخه PHP مورد نیاز پوسته را بررسی کنید
بهروزرسانی پوسته:
آخرین نسخه پوسته را از منبع رسمی دانلود کنید
فایلها را به صورت انتخابی جایگزین کنید
بهینهسازی کدها:
حذف توابع deprecated
بهینهسازی queryهای وردپرس
کاهش بار پردازشی توابع
مستندسازی تغییرات:
تمام تغییرات اعمال شده را ثبت کنید
نقاط مشکلزا را علامتگذاری نمایید
استفاده از WP-CLI:
wp theme activate twentytwentyfour --quiet
wp theme list --status=inactive
بررسی hookهای مشکلساز:
// لیست تمام هوکهای فعال
global $wp_filter;
print_r($wp_filter);
تست عملکرد در محیط ایزوله:
ایجاد یک محیط تست با WP Sandbox
بررسی پوسته در نسخههای مختلف PHP
به یاد داشته باشید که پس از رفع مشکل:
تغییرات را به محیط اصلی منتقل کنید
از پوسته backup بگیرید
دیباگ را غیرفعال نمایید
عملکرد سایت را تحت نظر بگیرید
تنظیمات PHP-FPM:
pm.max_children = 25
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10
بهینهسازی MySQL:
REPAIR TABLE wp_posts;
OPTIMIZE TABLE wp_options;
# از طریق SSH این دستورات را اجرا کنید
wp core verify-checksums
wp core update --force
اسکن فایلهای مخرب:
grep -r "eval(base64_decode" /path/to/wordpress
بررسی تغییرات غیرمجاز:
find . -type f -mtime -1 -ls
قبل از هر بهروزرسانی از سایت کامل Backup بگیرید (پایگاه داده + فایلها)
ابتدا در محیط استیجینگ (Staging) تست کنید
بهروزرسانیها را به ترتیب انجام دهید:
وردپرس هسته
پوستهها
افزونهها
حافظه PHP را حداقل روی 256M تنظیم کنید:
define('WP_MEMORY_LIMIT', '256M');
مانیتورینگ منابع با ابزارهایی مانند:
New Relic
Query Monitor
Server Dashboard
اسکن هفتگی با ابزارهای امنیتی:
wp plugin install wordfence --activate
wp audit-log install
تغییر پیشوند دیتابیس از wp_ به چیزی منحصر به فرد
محدود کردن دسترسی به فایلهای حساس:
chmod 600 wp-config.php
chmod 750 wp-content/themes/
از child theme استفاده کنید
توابع سفارشی را در Must-Use Plugins قرار دهید
کدنویسی استاندارد با رعایت:
Namespacing
Autoloading
Dependency Injection
Backup اتوماتیک روزانه با UpdraftPlus
اسکریپت بازیابی اضطراری آماده کنید
مستندسازی فرآیندها برای تیم فنی
تنظیم هشدار برای:
مصرف بالای CPU
خطاهای PHP
تغییرات فایلهای هسته
لاگگیری متمرکز با ELK Stack
در خبرنامه ما مشترک شوید و آخرین اخبار و به روزرسانی های را در صندوق ورودی خود مستقیماً دریافت کنید.
دیدگاه بگذارید