Как изменить разрешенную память выделенной памяти?

Неустранимая ошибка: допустимый размер памяти 33554432 байт исчерпан (пытался выделить 40000 байт) в / mount-storage / home20a / sub001 / sc20063-GJYD / […] в строке 62

Похоже, PHP-скрипт позволяет мне выделить 32 Мб памяти? Это было с примером изображения, чтобы проверить, что произойдет, если пользователь попытается загрузить огромную картинку.

Мой вопрос: как я могу предсказать, что это произойдет, а затем предупредить пользователя о том, что изображение слишком велико, вместо того чтобы возвращать эту ошибку? Его время, прошедшее с тех пор, как я его протестировал, но я думаю, что попробовал оба try-catch и @, но они оба потерпели неудачу, поскольку это фатальная ошибка. Размер примерного изображения составляет всего 1 кБ, поэтому он не будет проверять это значение.


Я думаю, что я решил свою проблему, я могу проверить ширину $ width и $ height изображения, а затем уведомить пользователя, если изображение слишком велико, но у меня есть другой вопрос: как изменить разрешенную память выделенной памяти? Я предполагаю, что мои пользователи попытаются опубликовать много изображений с высоким разрешением. Я пробовал ini_set("memory_limit", $bignumber) , но он не работает.

    Чтобы изменить memory_limit , вам нужно отредактировать директиву memory_limit в файле php.ini – это может быть сделано и в VirtualHost вашего Apache, если вы не хотите, чтобы изменения были эффективными для всего вашего сервера, но только для один веб-сайт.

    Но вы не всегда можете это сделать – вам нужно быть администратором вашего сервера …

    BTW, вы можете посмотреть, как изменить настройки конфигурации .

    Другой возможностью может быть использование imagemagick и его конвертируемый исполняемый файл с использованием одной из функций выполнения программы . Таким образом, изменение размера изображения не будет производиться с помощью PHP.

    Но, здесь, это означает, что вы зависите от внешней программы …

    Вы также можете редактировать разрешенный размер памяти через ini_set, но безопасный режим или патч suhoshin могут заблокировать его . Задайте необходимый размер памяти в php.ini в директиве memory_limit.

    Если вы хотите увеличить лимит памяти, это нужно сделать до запуска интерпретатора (т. Е. Вам нужно изменить его в файле php.ini – не используя ini_set).

    «Я думаю, что я решил свою проблему, я могу проверить ширину $ и высоту изображения»,

    gd getimagesize вернет значения, которые приведут карту к использованию памяти растрового изображения в GD, однако вы, вероятно, должны подумать об ограничении размера загрузки и максимального размера сообщения до того, как файл попадет на PHP

    C.

    Вам нужно сделать это в файле конфигурации php.ini : memory_limit .

    Попробуйте

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

    Возможно, ваш $bignumber не указан в мегабайтах (следовательно, M).

    Измените настройку в вашем PHP.ini или вы также можете использовать .htaccess (если не на хостинге Windows) со следующей строкой:

     php_value memory_limit 32M 

    Решение .htaccess может помочь вам, если у вас нет доступа к вашему php.ini или если вы хотите изменить этот параметр в определенной области вашего сайта. В моем примере ограничение увеличивается до 32 МБ. Обратите внимание, что некоторые хосты не поддерживают это или не будут поддерживать дополнительные большие значения (особенно в средах с общим хостингом).