ini_set('memory_limit', ) не работает и возвращает false; не могу понять почему

ini_set('memory_limit', '128M'); // Returns false; memory_limit unchanged

Я не смог найти список вещей, которые могут вызвать это. Пока что проверил:

  • Безопасный режим: отключен
  • отключить_функции: пусто
  • php_admin_value: Ничего из того, что я смог найти (есть ли способ узнать наверняка?)

У меня закончились идеи! ini_set корректно работает с другими параметрами (такими как "display_errors")


person Thomas Bonini    schedule 02.05.2011    source источник
comment
какую версию PHP вы используете?   -  person James C    schedule 02.05.2011
comment
Сбой для любой директивы, переданной ini_set() или только memory_limit? Любое значение для memory_limit не работает или только 128M? Как вы проверяете, что значение не изменилось? Я также заметил такое поведение на нескольких серверах здесь, поэтому мне очень интересно узнать, сталкиваемся ли мы с той же проблемой.   -  person    schedule 02.05.2011
comment
вы используете платформу общего хостинга или это машина, которую вы настроили/настроили самостоятельно?   -  person James C    schedule 02.05.2011
comment
@James: я использую PHP версии 5.2.6-1+lenny9.   -  person Thomas Bonini    schedule 02.05.2011
comment
@Phoenix: сбой только с memory_limit. Я проверяю, что значение не изменилось, вызывая ini_get.   -  person Thomas Bonini    schedule 02.05.2011
comment
@James, вопрос 2: это выделенный сервер, который настроил наш сетевой администратор. Это наш сервер разработки, где мы тестируем наш код; на живых серверах ini_set работает корректно.   -  person Thomas Bonini    schedule 02.05.2011


Ответы (2)


Если это уже не проблема с версией PHP, попробуйте проверить, что на машине нет ничего, что мешает вам поднять этот предел.

Как проверить, установлен ли Suhosin?

изменить (после установления, что Suhosin установлен):

Подробная информация о конфигурации находится здесь: http://www.hardened-php.net/suhosin/configuration.html Я подозреваю, что в /etc/php.d/ будет файл, который вы можете отредактировать, чтобы увеличить лимит памяти. Переменная конфигурации, которую вам нужно отредактировать: suhosin.memory_limit

person James C    schedule 02.05.2011
comment
Бинго! Этот сервер защищен патчем Suhosin 0.9.10. Что это? Попробую загуглить, может проблема в нем или нет - person Thomas Bonini; 02.05.2011
comment
Ну, это, вероятно, это, но я не могу найти параметр настройки, который говорит, что никогда не превышайте 64M. Вы знаете, где это может быть настроено? Или это так работает по умолчанию? В любом случае, я открыл тикет для нашего сетевого администратора, надеюсь, он сможет с этим разобраться. - person Thomas Bonini; 02.05.2011
comment
Хорошо, наш сетевой администратор изменил параметр sushosin, и теперь он работает. ты - person Thomas Bonini; 02.05.2011

В руководстве говорится:

До PHP 5.2.1, чтобы использовать эту директиву, ее нужно было включить во время компиляции с помощью --enable-memory-limit в строке конфигурации.

Это может быть причиной вашей проблемы.

person JB Nizet    schedule 02.05.2011
comment
Мы используем: PHP версии 5.2.6-1+lenny9, так что, к сожалению, это не проблема =( - person Thomas Bonini; 02.05.2011