Script Error

Статус
В этой теме нельзя размещать новые ответы.
такая проблемка, что на локалке я могу загружать фото любых размеров, а при загрузки на хостинг фотографий свыше 500кб скрипт выдаёт ошибку:
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 12000 bytes) in /home/fymb7svp/public_html/admin/cp-includes/inc-functions.php on line 141

как это можно исправить? в настройках пхп на сервере, написано что закачка одного файла до 100мб (File Uploads upload_max_filesize Maximum allowed size for uploaded files. 100M) это конфигурации PHP

редактировать php.ini не могу..

что делать?

Ошибка "Allowed memory size of X bytes exhausted (tried to allocate Y bytes)" - говорит о том что вашему скрипту не хватает памяти, точнее скрипт не укладывается в тот обьем памяти который разрешен для выполнения PHP скриптами.

В таких случаях обычно помогает изменение настроек, выберите подходящий:

memory_limit = 12M - опция в вашем php.ini файле (рекомендуется если есть доступ, действует на все скрипты на сервере)
ini_set('memory_limit', '12M'); - php-код в начале проблемных скриптов.
php_value memory_limit 12M - опция в .htaccess файле той папки в которой запускается скрипт.

Вместо 12M подставляем необходимый обьем памяти, например по нарастающей, пока ошбка не перестанет вылазить, значение по умолчанию обычно 8M (мегабайт).
 
Данная ошибка не имеет прямого отношения к размеру загружаемого файла. Скорее всего скрипт обрабатывает изображение (например, создает превью) и ему тупо не хватает памяти. Если это обычный shared-хостинг, то вышеописанные методы вряд ли поможет, потому как на shared-хостингах скриптам запрещено изменять параметры памяти.
 
Зато на shared-хостинге чаще всего можно менять memory_limit через cpanel. До некоторых пределов (зависит от хостера и тарифных планов).
 
Данная ошибка не имеет прямого отношения к размеру загружаемого файла. Скорее всего скрипт обрабатывает изображение (например, создает превью) и ему тупо не хватает памяти. Если это обычный shared-хостинг, то вышеописанные методы вряд ли поможет, потому как на shared-хостингах скриптам запрещено изменять параметры памяти.

ошибка указана как раз на той строке которая выполняет функцию "resize"
думаю вы правы..
как можно исправить ошибку?
 
Тебе же сказано, увеличь лимит памяти. Как это сделать на конкретно твоём хостинге, ты можешь узнать в техподдержке\FAQ'е хостера.

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

И, да, загружать картинку с много-мегапиксельным разрешением в любом случае скорей всего не получится.
 
Смотри скрипт который отвечает за загрузку и ресайз картинок. Дело в том, что твой скрипт не укладывается по варианту ошибки в 64 мб, если ты говоришь что грузишь картинку в 500 кб, то это очень сильная утечка памяти. Просматривай функцию, в которой происходит остановка скрипта. И оптимизируй ее. Какое такое изменение размера, что 64 мб не хватает при заливке 500 кб картинок?) Я думаю что даже расширение memory_limit до 100 мбайт на одну страницу не решит кардинально твоей проблемы. Оптимизируй код. Поставь метки в различных местах скрипта при загрузке фотографии и остальных действиях над ней и посмотри расходуемую память. Для просмотра ссылки Войди или Зарегистрируйся посмотри примеры. Собаку зарыли где то здесь) Если проблема в стандартных функциях пхп, которые ведут себя неадекватно при ресайзе больших фотографий, сделай разбивку на области таких фотографий по n пикселей, ресайз каждой области отдельно и склейку областей в фотографии обратно. Чтобы не выходить за "memory_limit". В общем все дело в дебаге.
 
Как уже сказали, memory_limit слишком мал, ведь сервер обрабатывает одновременно не только Выши странички =) А upload_max_filesize в PHP5 вообще ни на что не влияет (если конечно разработчик грамотен=)), есть риск что супер глобальный массив _FILES переполнен, в общем аспектов может быть много, а способ решения скорее всего один: связаться с тех.поддержкой хостера.

Добавлено через 6 минут
PHP:
copy($_FILES["filename"]["tmp_name"],
     "Z:/home/192.168.1.6/www/uploads/".$_FILES["filename"]["name"])
Возможно тебе придется переписать загрузчик самому ) Сверху примитивная "команда" для загрузки файла. filename Это имя переменной из формы загрузки. Ее Можно менять как угодно.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху