Сообщение об ошибке, которое вы получаете:
Разрешенный размер памяти 33554432 байта исчерпан (пытался выделить 19456 байт)
Указывает, что вы пытаетесь выделить больше 33554432 байт, которые вам разрешено использовать; т.е. 32 МБ:
; 33554432/1024/1024
32
Это указывает на то, что неудачное выделение произошло, когда PHP попытался выделить 19 Кбайт; но уже было выделено почти 32 МБ -- эти выделения не были неудачными, так как их общий объем был меньше 32 МБ.
Часть «19456 байт» сообщения об ошибке не имеет значения: важно то, что ваш memory_limit установлен на 32 МБ.
Учитывая, что memory_limit является своего рода защитой, было бы странно, если бы ваш хостинг-провайдер позволил вам изменить его значение...
Если вы находитесь на виртуальном хостинге, это будет означать, что любой на сервере может получить любое количество памяти, которое он хочет... Что было бы не очень хорошо для других пользователей на том же сервере!
Кстати: 32 МБ на самом деле вполне разумное значение - я никогда не видел сервер, настроенный на разрешение более 32 МБ для веб-приложения... И значение по умолчанию для PHP 5.2, похоже, составляет 16 МБ, согласно руководство.
(Я работаю с Drupal уже пару месяцев)
По поводу ошибки 500 у меня мало идей... Возможно, что safe_mode активирован и не позволяет устанавливать memory_limit во время выполнения.
В руководстве об этом особо не говорится, но есть немного информации в разделе max_execution_time:
Вы не можете изменить этот параметр с помощью ini_set() при работе в безопасном режиме. Единственный обходной путь — отключить безопасный режим или изменить ограничение по времени в php.ini.
Я полагаю, то же самое относится и к memory_limit ; во всяком случае, это выглядело бы логично.
person
Pascal MARTIN
schedule
06.09.2009