Разрешенный объем памяти 33554432 байт исчерпан (попытался выделить 43148176 байт) в php - PullRequest
261 голосов
/ 06 января 2009

Это сообщение об ошибке представляется, какие-либо предложения?

Допустимый объем памяти 33554432 байта исчерпан (попытался выделить 43148176 байт) в php

Ответы [ 20 ]

2 голосов
/ 12 января 2018
ini_set('memory_limit', '-1');
2 голосов
/ 06 января 2009

Если вы пытаетесь прочитать файл, это займет память в PHP. Например, если вы пытаетесь открыть и прочитать файл MP3 (например, $ data = file ("http://mydomain.com/path/sample.mp3"), он все равно вытянет все в память.

Как предполагает Нельсон, вы можете увеличить максимальный лимит памяти, если вам действительно нужно использовать этот объем памяти.

1 голос
/ 23 февраля 2018

Я заметил, что многие ответы просто пытаются увеличить объем памяти, выделяемый скрипту, который имеет свое место, но чаще всего это означает, что с памятью что-то слишком либерально из-за непредвиденного объема или размера. Очевидно, что если вы не являетесь автором сценария, то это зависит от автора, если только вы не амбициозны :) Документы PHP даже говорят, что проблемы с памятью связаны с " плохо написанными сценариями "

Следует отметить, что ini_set('memory_limit', '-1'); (без ограничений) может вызвать нестабильность сервера как 0 bytes free = bad things. Вместо этого найдите разумный баланс между тем, что пытается сделать ваш скрипт, и объемом доступной памяти на машине.

Лучший подход: Если вы автор сценария (или амбициозный), вы можете отладить такие проблемы с памятью с помощью xdebug . Последняя версия (2.6.0 - выпущена 2018-01-29) вернула профилирование памяти, которое показывает, какие вызовы функций занимают большие объемы памяти. В скрипте выявляются проблемы, которые иначе трудно найти. Как правило, неэффективность находится в цикле, который не ожидает объем, который он получает, но каждый случай будет оставлен читателю в качестве упражнения:)

Документация xdebug полезна, но сводится к 3 шагам:

  1. Установите его - Доступно через apt-get и yum и т. Д.
  2. Настройте его - xdebug.ini: xdebug.profiler_enable = 1, xdebug.profiler_output_dir = /where/ever/
  3. Просмотр профилей в таком инструменте, как QCacheGrind , KCacheGrind
1 голос
/ 13 февраля 2018

Я получал то же сообщение об ошибке после перехода на новую тему в Wordpress. PHP работал под управлением версии 5.3, поэтому я перешел на 7.2. Это решило проблему.

1 голос
/ 06 июня 2017

Я не обновил хостинг, и база данных была доступна только для чтения. Joomla нужно было написать сессию, но она не смогла это сделать.

1 голос
/ 14 октября 2014

запись

ini_set('memory_limit', '-1');

в вашем index.php вверху после открытия тега php

1 голос
/ 21 января 2015

WordPress пользователи добавляют строку:

@ini_set('memory_limit', '-1');

в wp-settings.php, который вы можете найти в установленной корневой папке WordPress

0 голосов
/ 20 апреля 2019

если вы используете Laravel, то используйте эти способы

public function getClientsListApi(Request $request){ print_r($request->all()); //for all request print_r($request->name); //for all name }

вместо

public function getClientsListApi(Request $request){ print_r($request); // it show error as above mention }

0 голосов
/ 25 мая 2018

Переключение сервера на php 7.x решило проблему в моем случае

0 голосов
/ 07 февраля 2018

У меня была та же проблема, что и запуск php в командной строке. Недавно я изменил файл php.ini и сделал ошибку при изменении php.ini

Это для php7.0

путь к php.ini, где я допустил ошибку: /etc/php/7.0/cli/php.ini

Я установил memory_limit = 256 (что означает 256 bytes)
вместо memory_limit = 256M (что означает 256 Mega bytes).

; Максимальный объем памяти, который может потреблять скрипт (128 МБ)
; http://php.net/memory-limit
memory_limit = 128M

Как только я исправил это, мой процесс начал работать нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...