Как да разрешите PHP фатална грешка: Разрешен е размерът на паметта от 8388608 байта

Една от най-често срещаните и разочароващи грешкисрещнати от PHP кодерите гласи: „Фатална грешка: разрешен размер на паметта от 8388608 байта е изчерпан…“, последван от нещо като „(опита се да разпредели XXXX байта) в /home/www/file.module на ред 12.“ Тази фатална PHP грешка се култивира нагоре, защото по подразбиране PHP има ограничение за използване на паметта от 8 MB за всеки даден скрипт. Това е хубаво нещо всъщност, защото не искате измамен PHP скрипт да свали сървъра ви, като закачите цялата памет. Но понякога ще имате скрипт на PHP, който обикновено надвишава ограничението от 8 MB (да речем, за импортиране или качване). За да заобиколите съобщението за грешка „Fatal error: Разрешен е размерът на паметта от 8388608 байта…“, просто поставете този ред код в скрипта си в горната част:

ini_set ( "memory_limit", "16M");

memory_limit

Това по-скоро ще настрои ограничението на паметта ви на 16 MBповече от 8 MB. Можете и трябва да се сблъскате с това число, така че да е възможно най-ниско, без да повтаряте това съобщение за грешка. Това ще промени само ограничението на паметта за този конкретен PHP файл.

Като алтернатива можете да промените файла си php.ini, за да увеличите лимита на паметта. Това ще се отрази на всички скриптове на вашия сървър. Просто отворете php.ini и намерете реда, който гласи „memory_limit“ и го променете:

memory_limit = 16M

Фатална грешка: разрешен размер на паметта 134217728 е изчерпан

Забелязах в собствения си PHP.ini файл, който по подразбиране е много по-висок при 128M. Така че, ако някога получавам това съобщение за грешка, то ще гласи: „Фатална грешка: Разрешен е паметта от 134217728 байта е изчерпан ...“ и очевидно би бил много по-голям проблем. Но той има същото решение като „фатална грешка: разрешен размер на паметта от 8388608 байта е изчерпан…“ или „фатална грешка: разрешен размер на паметта от 16777216 байта е изчерпан ...“ или каквото и да е. Явно по подразбиране memory_limit беше повишено от 8M на 16M в PHP 5.2.0 и сега е 128M за PHP 5.3.0, което би обяснило защо изобщо не можете да получите това съобщение за грешка.

Можете също да деактивирате ограничението на паметта, като зададете memory_limit на –1 в PHP.ini.

memory_limit = -1

Това обаче обикновено не е добра идея по очевидни причини.

Забележка: Можете също да използвате реда памет_лимит в страницата си .htaccess.

Сега, не забравяйте, това е само решение. Наистина, вашият PHP скрипт трябва не да е над 8 MB, освен ако не качвате файлове илиправи нещо друго, което очевидно заема много памет. Това, което наистина трябва да правите, е да се опитате да разберете защо скриптът ви използва толкова много памет и се опитайте да го поправите. Един от начините да разберете колко памет използва вашият PHP скрипт е да използвате PHP функцията memory_get_usage (). Просто озвучете го във всеки един момент от вашия скрипт, за да разберете къде шипа вашата памет:

ехо памет_get_usage ();

Ако получавате това съобщение за грешка в Drupal или Joomla, вероятният виновник е нов модул или пакет. Например, в Drupal, страницата администратор / модули се зарежда всеки модул във вашата инсталация Drupal, който може да получитекосмат, ако потребителски модул е ​​бъги, корумпиран или хакнат. Опитайте да деактивирате модули един по един, за да установите коя страна намалява. Също така, някои доставчици на хостинг услуги ще игнорират вашите опити да промените ограниченията на паметта за вашия PHP код, така че може да се наложи да се свържете с вашата хостинг поддръжка, за да ви помогне. Намерих понякога трябва да редактирам файла php.ini и понякога да вмъкна кода във файла .htaccess. Така или иначе, да се надяваме, тази информация тук е достатъчна, за да ви изведе на път!

0

Подобни статии

Оставете коментар