מסך לבן וורדפרס — הסבר מלא
המסך הלבן הוא שגיאת PHP קריטית שאי אפשר לראות. וורדפרס נתקל בשגיאה בלתי הפיכה באמצע הרינדור, PHP נעצר, ומכיוון שהצגת השגיאות כבויה
פורסם
המסך הלבן הוא שגיאת PHP קריטית שאי אפשר לראות. וורדפרס נתקל בשגיאה בלתי הפיכה באמצע הרינדור, PHP נעצר, ומכיוון שהצגת השגיאות כבויה בשרתי פרודקשן — הדף חזר ריק במקום להדפיס את הסיבה. התיקון כמעט אף פעם אינו ניחוש: הפעילו את לוג הדיבאג, פתחו את wp-content/debug.log וקראו את שורת השגיאה הקריטית האחרונה. היא מציינת בדיוק את הקובץ — כמעט תמיד תוסף או תבנית — והשורה הזו היא כל התיקון.
למה המסך ריק
ל-PHP יש הגדרה בשם display_errors. במחשב פיתוח היא בדרך כלל דלוקה, ולכן שגיאה קריטית מדפיסה stack trace למסך. בשרת אמיתי היא כבויה כברירת מחדל, מכיוון שחשיפת נתיבי קבצים ושגיאות למבקרים היא בעיית אבטחה. אז כשמשהו זורק שגיאה קריטית — קריאה לפונקציה שכבר לא קיימת, מחלקה שלא נטענה, שגיאת תחביר בעדכון של תוסף — PHP מת ולא שולח כלום. הדפדפן שלכם מרנדר מסמך ריק. זה ה”מסך הלבן”.
מאז וורדפרס 5.2 קיים מנגנון לטיפול בשגיאות קריטיות (WP_Fatal_Error_Handler) שמנסה לתפוס אותן. כשהוא עובד, אתם לא מקבלים דף ריק — אתם מקבלים “אירעה שגיאה קריטית באתר שלך”, יחד עם מייל לכתובת המנהל שלרוב מכיל את השגיאה עצמה וקישור למצב שחזור (Recovery Mode). מסך ריק באמת פירושו בדרך כלל שהשגיאה נורתה לפני שהמנגנון הזה הספיק לרוץ: שגיאת parse/תחביר (נתפסת בזמן קומפילציה), must-use plugin שבור, או שגיאה קריטית ב-functions.php של התבנית הפעילה. כך או כך, הסיבה כתובה איפשהו. פשוט צריך להפעיל את הכתיבה.
תיקון, לפי הסדר
1. הפעילו את הלוג. ערכו את wp-config.php דרך SFTP והוסיפו את זה מעל השורה /* That's all, stop editing! */:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );
WP_DEBUG_DISPLAY במצב false שומר על השגיאות מחוץ לדף הציבורי, בעוד ש-WP_DEBUG_LOG כותב אותן ל-wp-content/debug.log. רעננו את הדף השבור פעם אחת כדי לייצר רשומה טרייה.
2. קראו את השגיאה הקריטית האחרונה. פתחו את wp-content/debug.log והסתכלו בתחתית:
tail -n 30 wp-content/debug.log
אתם מחפשים שורה כזו:
[14-Jul-2026 09:12:44 UTC] PHP Fatal error: Uncaught Error: Call to undefined function wc_get_product() in /var/www/html/wp-content/plugins/some-addon/includes/class-widget.php:88
הנתיב מציין את האשם: plugins/some-addon. זו התשובה שלכם. אם ה-trace ארוך או שההודעה מעורפלת (Allowed memory size exhausted, Cannot redeclare, שם מחלקה שאתם לא מזהים), הדביקו אותה למפענח לוג השגיאות שלנו — הוא מסנן את הרעש, אומר לכם על איזה תוסף או תבנית הנתיב מצביע, ומסביר מה משמעות סוג השגיאה הספציפי.
3. השביתו את הרכיב שצוין. אתם לא יכולים להגיע ל-/wp-admin, אז עשו זאת דרך SFTP. שנו את שם התיקייה של התוסף הבעייתי, למשל some-addon ← some-addon.off. וורדפרס לא יכול לטעון תיקייה שהוא לא מוצא, אז הוא משבית את התוסף והאתר חוזר. אם הלוג מצביע על התבנית שלכם, עברו לתבנית ברירת מחדל על ידי שינוי שם התיקייה של התבנית הפעילה — וורדפרס יחזור לתבנית מובנית מסוג twentytwentysomething.
4. אם הלוג לא נכתב, wp-content אינו ניתן לכתיבה, או שהשגיאה היא ברמת השרת. בדקו במקום זאת את לוג שגיאות ה-PHP של האחסון:
find . -name "error_log" -newermt "-1 hour"
אותו מידע, קובץ אחר. סטאקים של cPanel/Apache פעמים רבות מייצרים error_log בשורש האתר או בתיקייה הכושלת.
מה לא לעשות
אל תסתפקו בהגדלת ה-memory limit. העצה הכי חוזרת ברשת היא להעלות את WP_MEMORY_LIMIT ל-256M או 512M. זה מתקן את המסך הלבן רק אם הלוג באמת אומר Allowed memory size of N bytes exhausted. אם השגיאה היא Call to undefined function, יותר זיכרון לא עושה כלום — שיניתם הגדרה באקראי והמסך עדיין לבן. קראו את הלוג קודם, ורק אז הגדילו את הזיכרון אם זיכרון הוא הבעיה המצוינת.
אל תנקו את המטמון ותקראו לזה אבחון. המסך הלבן הוא PHP שמת בשרת עוד לפני שקיים HTML כלשהו. נכס מטמון ישן לא יכול לגרום למסמך ריק. (תוסף מטמון שבור כן יכול — אבל הלוג יציין אותו, וזה כל העניין.)
אל תערכו או תתקינו מחדש את ליבת וורדפרס. השגיאה הקריטית כמעט אף פעם אינה ב-wp-includes או ב-wp-admin; היא בתוסף או בתבנית שהלוג מצביע עליהם. התקנה מחדש של הליבה איטית, מסוכנת, ומטפלת בסימפטום שלא אישרתם.
אל תשביתו את כל התוספים ותפעילו אותם מחדש אחד-אחד בעיוורון. חלוקה בינארית עובדת, אבל זה המסלול האיטי. הלוג אומר לכם את התיקייה המדויקת בצעד אחד. השתמשו בשיטת “כבה הכל” רק כשאין שום שגיאה קריאה בכלל.
אל תשאירו את display_errors דלוק בפרודקשן. ברגע שהאתר חזר, הסירו את הגדרות הדיבאג (או החזירו את WP_DEBUG ל-false). שגיאות שמודפסות למבקרים חושפות את הנתיבים שלכם.
עדיין תקועים?
אם הלוג מציין תוסף אבל השבתה שלו לא מנקה את המסך, יש שגיאה קריטית שנייה מתחת לראשונה — הפעילו את הלוג שוב וקראו את השורה האחרונה החדשה; שגיאות קריטיות מצטברות. אם ההודעה עצמה היא החומה, זרקו אותה למפענח לוג השגיאות ותנו לו לתרגם עבורכם את סוג השגיאה ואת נתיב הקובץ. המסך הלבן נשאר תעלומה רק כל עוד הלוג כבוי.