Допустимый объем памяти 67108864 байт исчерпан (попытался выделить 19200 байт) - PullRequest
3 голосов
/ 11 сентября 2011

Я пытаюсь загрузить изображение размером 10 МБ и выдает ошибку:

Неустранимая ошибка: допустимый объем памяти 67108864 байта исчерпан (попытался выделить 19200 байтов)

Я также пытался перейти в файл .ini, внеся следующие изменения:

upload_max_filesize = 70M
post_max_size = 20M

Но он все еще не работает ... и выдает мне ту же ошибку ...это так расстраивает, что я могу делать дальше ...

Что я делаю не так с моим кодом, Как я могу решить эту проблему?

Ответы [ 7 ]

9 голосов
/ 11 сентября 2011

Недостаточно памяти для PHP.Вам нужно будет включить параметр memory_limit в вашем php.ini или использовать ini_set в вашем PHP (при условии, что он включен).

3 голосов
/ 11 сентября 2011

Не читайте ваш файл в память. Вы используете более 64 МБ в вашем скрипте, что намного больше, чем 10 МБ на изображении, так что вы, скорее всего, читаете файл и копируете его и делаете другие неэффективные вещи. (Мы можем только догадываться, не видя ваш код.)

Просто скопируйте файл непосредственно из его временного местоположения в новое желаемое местоположение с помощью операций файловой системы (например, move_uploaded_file).

Если вам определенно требуется 64 МБ по какой-то причине, кроме простой загрузки изображения & mdash; скажем, возможно, вы выполняете сложные и дорогостоящие манипуляции с & mdash; тогда вы можете изменить параметр memory_limit INI. Но это должно быть последним средством по сравнению с исправлением вашего кода. :)

3 голосов
/ 11 сентября 2011

В настоящее время у вас есть ограничение памяти 64M (это то, что сообщение пытается вам сообщить), что намного больше, чем 10-мегабайтное изображение. Возможно, у вас есть проблема в другом месте (неэффективный скрипт, бесконечный цикл, бесконечная рекурсия?).

3 голосов
/ 11 сентября 2011

Пожалуйста, попробуйте: ini_set ( "memory_limit", "100M");

0 голосов
/ 21 ноября 2013

Вы должны по крайней мере поменять значения, которые у вас есть для "post_max_size" (максимум для всего сообщения) и "upload_max_filesize" (максимум для каждого фактического файла)

0 голосов
/ 11 сентября 2011

Правильный синтаксис для использования в вашем php.ini:

memory_limit = 128M

Вы также можете попробовать изменить свой скрипт, чтобы он занимал меньше памяти

0 голосов
/ 11 сентября 2011

Ваш PHP исчерпал память. Вместо того, чтобы увеличивать ограничения памяти, вы должны серьезно подумать, могли бы вы зачаровать свой скрипт так, чтобы он занимал меньше памяти. Например, вместо чтения загруженного файла в память используйте для него только действия файловой системы.

...