PHP memory_limit הוא תקרת זיכרון שכל בקשת PHP יכולה להשתמש בה. ברגע שבקשה חוצה את הגבול - PHP זורק שגיאת fatal: Allowed memory size of N bytes exhausted. ב-WordPress, אתר עם רק תוסף יחיד צרכן 32-64MB. עם Elementor, WooCommerce, Backup או Image Optimization - 128-256MB הוא הסטנדרט. אתר עם 50 תוספים פעילים ובקשת admin כבדה (יבוא של 1000 פוסטים, גיבוי, regenerate thumbnails) דורש 512MB.
למה זה משנה
השפעה ישירה: כשהגבול נמוך מדי, פעולות באמצע נופלות. גיבוי שעוצר אחרי 70%, ייבוא XML שמסיים חצי, או עורך פוסט שלא נטען בכלל - אלו תסמינים של memory exhaustion. גם פעולות שעבדו בעבר יכולות להיכשל אחרי הוספת תוסף שמגדיל את הצריכה.
השפעה עקיפה: זה גם מהווה רשת ביטחון. אתר עם 256MB יכול להתמודד עם בקשה אחת חריגה (למשל REST endpoint שמחזיר 5000 פריטים). אתר עם 64MB יקרוס. ב-WooCommerce עם הרבה מוצרים, תהליך של export/import דורש לעיתים 1GB+. בלי הזיכרון הזה - אי אפשר לעדכן קטלוג גדול.
אבל - הגדלה אינסופית היא גם בעיה. memory_limit של 2GB בעת בקשה שדולפת זיכרון אומר שכל worker יחזיק 2GB; ב-10 workers זה 20GB RAM. השרת יכרע. הערך הנכון הוא הקטן ביותר שמספיק לפעולות הסבירות - לרוב 256MB.
איך לזהות
הגדרה נוכחית: ב-Tools > Site Health > Info > Server, מופיע PHP memory limit. אפשר גם להריץ ב-WP-CLI: wp config get WP_MEMORY_LIMIT ו-php -i | grep memory_limit.
שגיאות זיכרון: בדוק wp-content/debug.log - חפש Allowed memory size of. כל שורה כזו היא בקשה שנכשלה. בלוג השרת (לרוב /var/log/php_error.log או error_log ב-cPanel) ימצאו עוד.
סימן עקיף: עמוד אדמין שמעלה "500 Internal Server Error" באמצע פעולה - לעיתים זה memory limit. בדוק את הלוג.
איך לתקן
חשוב: יש שתי הגבלות שונות. WordPress מגדירה ב-wp-config.php, וPHP מגדיר ב-php.ini. ההגבלה החמורה יותר תמיד גוברת. WordPress לעולם לא יכולה לחרוג מהגבלת PHP, אז אם PHP הוא 64MB - WP_MEMORY_LIMIT של 256MB לא יעזור.
שלב 1: WordPress. ב-wp-config.php, לפני /* That's all */:
define('WP_MEMORY_LIMIT', '256M');
define('WP_MAX_MEMORY_LIMIT', '512M'); // לאדמין בלבדWP_MEMORY_LIMIT חל על frontend; WP_MAX_MEMORY_LIMIT חל על wp-admin (פעולות כבדות).
שלב 2: PHP. ב-cPanel: "Select PHP Version" או "MultiPHP INI Editor" > memory_limit = 256M. ב-Plesk: Domain > PHP Settings > memory_limit. ב-VPS עם גישת shell: ערוך /etc/php/8.2/fpm/php.ini:
memory_limit = 256Mהפעל מחדש PHP-FPM: systemctl restart php8.2-fpm.
אם אין גישה ל-php.ini, נסה .user.ini בשורש האתר:
memory_limit = 256Mחכה 5-10 דקות (cache של PHP-FPM) ובדוק שוב.
טעויות נפוצות
הטעות הראשונה: להגדיר WP_MEMORY_LIMIT ולחשוב שהבעיה נפתרה - אם PHP נמוך יותר, WP_MEMORY_LIMIT לא משנה. תמיד בדוק עם phpinfo() את הערך בפועל. הטעות השנייה: להעלות לזיכרון אינסופי (-1) כדי "לא לדאוג" - זה מסתיר דליפות זיכרון. תוסף שולל מנהל את עצמו, ויום אחד 100 בקשות מקבילות יחד צורכות 100GB ומפילים את השרת. הטעות השלישית: לשכוח שיש גם max_execution_time ו-max_input_vars - שלושת הערכים האלה לרוב נופלים יחד באתרים חורקים.
בדיקה לאחר תיקון
בדוק ב-Site Health > Server שהערך עודכן. הרץ את הפעולה שנכשלה (גיבוי, ייבוא וכו') וודא שהיא מסתיימת. ב-debug.log חפש שגיאות חדשות - אם אין, התיקון תפס. ב-cPanel "Resource Usage", בדוק שהזיכרון לא נוגע בגג של החשבון.