Я столкнулся с общей «Неустранимая ошибка: вне памяти (выделено 30408704) (попытался выделить 24 байта) …» PHP Fatal error. Страницы, обслуживаемые через Apache, не демонстрируют такого поведения.
Я пробовал следующее:
ini_set('memory_limit', -1)
, ini_set('memory_limit', '-1')
, ini_set('memory_limit', 100000000)
, ini_set('memory_limit', '128M')
, и т.д. unset()
ненужные массивы и объекты, чтобы побудить сборщик мусора освободить память. -c
чтобы вручную выбрать определенные файлы php.ini с различными значениями. Независимо от того, что я пытаюсь, сообщение об ошибке одно и то же. Похоже, что мои скрипты командной строки игнорируют изменения в memory_limit
.
Я стараюсь, чтобы мои сценарии были эффективными с точки зрения памяти, но в настоящее время мне нужно разбирать большие объемы HTML с помощью простой HTML DOM, и именно в синтаксическом анализе я испытываю проблемы с памятью. В попытке уменьшить объем памяти сценария, я попытался использовать DOMDocument вместо этого. Это тоже не помогает. Фактически, ошибка с памятью теперь запускается в другом месте сценария.
Мой вопрос: кто-нибудь испытал эту или подобную проблему? У вас есть какие-нибудь рекомендации?
Спасибо.
Оказывается, проблема была вызвана защитой оболочки вилки оболочки, которая была включена на сервере, которая помещала ограничение жесткой памяти на все сценарии командной строки. Это было включено моим веб-хостом без моего ведома.
ваш PHP на cli может использовать другой php.ini для вашего apache php. попробуйте phpinfo()
и проверьте его, используя ini-файл, который, по вашему мнению, использует.