כיצד לפתור שגיאה קטלנית PHP: גודל זיכרון מותר של 8388608 בתים מותש

אחת השגיאות הנפוצות והמתסכלות ביותרבה נתקלו מקודדי PHP נכתב: "שגיאה קטלנית: גודל זיכרון מותר של 8388608 בתים מותש ..." ואחריו משהו כמו "(ניסה להקצות XXXX בתים) ב- /home/www/file.module בשורה 12." שגיאת PHP קטלנית זו גוברת מכיוון שברירת המחדל ל- PHP יש מגבלת שימוש בזיכרון של 8 מגהבייט עבור כל סקריפט נתון. זה דבר טוב, למעשה, מכיוון שאינך מעוניין שתסריט PHP נוכל להפיל את השרת שלך על ידי חיבור כל הזיכרון. אבל מדי פעם יהיה לך סקריפט PHP שבדרך כלל חורג ממגבלת 8 מגה-בתים (נניח לייבוא ​​או העלאה). כדי לעקוף את הודעת השגיאה "שגיאה אנושה: גודל זיכרון מותר של 8388608 בתים מותשים ...", פשוט הכנס שורת קוד זו לתסריט שלך בראש:

ini_set ("זיכרון_לימיט", "16 מ '“);

זיכרון

זה יגדיר את מגבלת הזיכרון שלך ל 16 מגה-בייט, במקום זאתיותר מ 8 מגה בייט. אתה יכול, וצריך, להתעסק במספר זה כך שהוא יהיה נמוך ככל האפשר בלי לחזור על הודעת השגיאה. זה ישנה רק את מגבלת הזיכרון עבור קובץ PHP מסוים.

לחלופין, באפשרותך לשנות את קובץ ה- php.ini כך שיעלה את מגבלת הזיכרון. זה ישפיע על כל הסקריפטים בשרת שלך. פשוט פתח את php.ini ומצא את השורה שקוראת "memory_limit" ושנה אותה:

memory_limit = 16 מיליון

שגיאה אנושה: גודל הזיכרון המותר של 134217728 מותש

שמתי לב ב- PHP שלי.קובץ ini שברירת המחדל שלי גבוהה בהרבה ב 128M. לכן, אם הייתי מקבל אי פעם את הודעת השגיאה הזו היה קורא: "שגיאה אנושה: גודל זיכרון מותר של 134217728 בתים מותש ..." וכמובן שזו בעיה הרבה יותר גדולה. אבל יש לזה את הדרך לעקיפת הבעיה כמו "שגיאה אנושה: גודל זיכרון מותר של 8388608 בתים מותש ..." או "שגיאה אנושה: גודל זיכרון מותר של 16777216 בתים מותש ..." או כל דבר אחר. ככל הנראה, ברירת המחדל של memory_limit הועלתה מ- 8M ל- 16M ב- PHP 5.2.0 והיא כעת 128M עבור PHP 5.3.0, מה שיסביר מדוע אינך מקבל את הודעת השגיאה הזו בכלל.

באפשרותך להשבית את מגבלת הזיכרון על ידי הגדרת זיכרון_גבלה ל- -1 ב- PHP.ini.

memory_limit = -1

בדרך כלל זה לא רעיון טוב מסיבות ברורות.

הערה: באפשרותך להשתמש גם בשורת memory_limit שבדף ה- Access שלך.

עכשיו, זכרו, זו רק דרך לעקיפת הבעיה. באמת, סקריפט PHP שלך צריך לא להיות מעל 8 מגה-בתים, אלא אם כן העלאת הקבצים שלך אועושה משהו אחר שכנראה לוקח הרבה שימוש בזיכרון. מה שאתה באמת צריך לעשות הוא לנסות להבין מדוע התסריט שלך משתמש בזיכרון כה רב ולנסות לתקן אותו. אחת הדרכים להבין כמה זיכרון משתמש ב- script של PHP היא להשתמש בפונקציית PHP של memory_get_usage (). כל שעליך לעשות הוא להדהד את זה בכל נקודה בסקריפט שלך כדי לגלות היכן השימוש בזיכרון שלך מתגלה:

הד Memory_get_usage ();

אם אתה מקבל הודעת שגיאה זו בדרופל או בג'ומלה, האשם האפשרי הוא מודול או חבילה חדשה. לדוגמה, בדרופל, עמוד הניהול / מודולים נטען כל מודול בהתקנת דרופל שלך, שיכול לקבלשעיר אם מודול מותאם אישית הוא באגי, פגום או פרוץ. נסה להשבית מודולים בזה אחר זה כדי לזהות מי מוריד את המסיבה. כמו כן, חלק מספקי אירוח יתעלמו מהניסיונות שלך לשנות את מגבלות הזיכרון עבור קוד ה- PHP שלך, כך שתצטרך ליצור קשר עם תמיכת האירוח שלך כדי לעזור לך. מצאתי שלפעמים אני צריך לערוך את קובץ ה- php.ini ולפעמים להכניס את הקוד לקובץ .htaccess. כך או כך, יש לקוות, שמידע זה כאן מספיק בכדי לגרום לכם לדרך!

0

מאמרים דומים

השאר תגובה