Як вирішити фатальну помилку PHP: Дозволений розмір пам'яті 8388608 байт вичерпано

Одна з найпоширеніших і неприємних помилокз якими стикаються PHP-кодери: Ця фатальна помилка PHP збільшується через те, що за умовчанням PHP має обмеження на використання пам'яті 8 Мб для будь-якого сценарію. Це дуже добре, адже ви не хочете, щоб шахрайський PHP-скрипт збивав ваш сервер, зачепивши всю пам'ять. Але іноді у вас є сценарій PHP, який зазвичай перевищує ліміт 8 Мб (скажімо, для імпорту чи завантаження). Щоб вирішити "Фатальна помилка: Вичерпано дозволений розмір пам'яті 8388608 байт ...", просто вставте цей рядок коду у свій сценарій вгорі:

ini_set ("memory_limit", "16М“);

memory_limit

Це швидше встановить обмеження вашої пам'яті на 16 Мбніж 8 Мб. Ви можете і потрібно пошаровувати цей номер, щоб він був якомога меншим, не повторюючи це повідомлення про помилку. Це лише змінить ліміт пам’яті для конкретного файлу PHP.

Ви також можете змінити файл php.ini, щоб збільшити ліміт пам’яті. Це вплине на всі сценарії на вашому сервері. Просто відкрийте php.ini і знайдіть рядок, який читає "memory_limit", і змініть його:

memory_limit = 16М

Фатальна помилка: Дозволений розмір пам'яті 134217728 вичерпано

Я помітив у власному PHP.ini-файл, який за замовчуванням у 128 М значно більший. Тож, якби я коли-небудь отримував це повідомлення про помилку, воно писало б: «Фатальна помилка: Дозволений розмір пам’яті 134217728 байт вичерпано…», і, очевидно, це буде значно більшою проблемою. Але він має такий самий спосіб вирішення, як "Фатальна помилка: Вичерпано розмір пам'яті 8388608 байт ..." або "Фатальна помилка: Вичерпано пам'ять розміром 16777216 байт ..." або інше. Мабуть, за замовчуванням memory_limit було підвищено з 8М до 16М у PHP 5.2.0, і тепер це 128М для PHP 5.3.0, що пояснило б, чому ви взагалі не можете отримати це повідомлення про помилку.

Ви також можете відключити обмеження пам’яті, встановивши memory_limit на –1 у PHP.ini.

memory_limit = -1

Однак це, як правило, не є доброю ідеєю з очевидних причин.

Примітка: Ви також можете використовувати рядок memory_limit на своїй сторінці .htaccess.

Тепер, пам’ятайте, це лише обхідний шлях. Справді, ваш PHP-скрипт повинен ні не перевищує 8 МБ, якщо ви не завантажуєте файли аборобити щось інше, що, очевидно, забирає багато пам'яті. Що ви насправді повинні робити, це намагатися зрозуміти, чому ваш сценарій використовує стільки пам'яті, і спробувати це виправити. Одним із способів з’ясувати, скільки пам'яті використовує ваш PHP-скрипт, є використання функції PHP memory_get_usage (). Просто повторіть це в будь-який момент вашого сценарію, щоб з’ясувати, де збільшується використання вашої пам’яті:

echo memory_get_usage ();

Якщо ви отримуєте це повідомлення про помилку в Drupal або Joomla, ймовірним винуватцем є новий модуль або пакет. Наприклад, у Drupal завантажується сторінка адміністратора / модулів кожен модуль у вашій інсталяції Drupal, який можна отримативолохатий, якщо користувацький модуль глючить, пошкоджений або зламаний. Спробуйте відключити модулі по одному, щоб визначити, що збиває учасника. Крім того, деякі провайдери хостингу ігноруватимуть ваші спроби змінити обмеження пам’яті для вашого PHP-коду, тому вам може знадобитися зв’язатися зі службою підтримки хостингу, щоб допомогти вам. Я виявляю, що іноді мені потрібно редагувати файл php.ini, а іноді вставляти код у файл .htaccess. У будь-якому випадку, сподіваємось, цієї інформації тут достатньо, щоб завести вас у дорогу!

0

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

Залишити коментар