PHP-скрипты командной строки игнорируют директивы php.ini и ini_set ('memory_limit', …)

Я столкнулся с общей «Неустранимая ошибка: вне памяти (выделено 30408704) (попытался выделить 24 байта) …» PHP Fatal error. Страницы, обслуживаемые через Apache, не демонстрируют такого поведения.

Я пробовал следующее:

  1. Увеличьте memory_limit в php.ini до гораздо большего значения.
  2. Увеличение memory_limit внутри самого скрипта посредством вызовов ini_set('memory_limit', -1) , ini_set('memory_limit', '-1') , ini_set('memory_limit', 100000000) , ini_set('memory_limit', '128M') , и т.д.
  3. unset() ненужные массивы и объекты, чтобы побудить сборщик мусора освободить память.
  4. Обращение к веб-хосту. Они, как правило, очень способны и хорошо осведомлены, но также не смогли мне помочь в этом вопросе.
  5. Я попытался явно включить файл php.ini, используя флаг командной строки -c чтобы вручную выбрать определенные файлы php.ini с различными значениями.
  6. Я попытался установить memory_limit в php.ini, используя как необработанные числа байтов, так и значения, такие как 64M, 128M и т. Д.
  7. Хостинг-провайдер смог запустить скрипт как root без каких-либо проблем, но испытывает ту же самую проблему, которую я выполняю при ее использовании, используя моего пользователя без полномочий root. Возможно, есть какие-то проблемы с разрешениями?

Независимо от того, что я пытаюсь, сообщение об ошибке одно и то же. Похоже, что мои скрипты командной строки игнорируют изменения в memory_limit .

Я стараюсь, чтобы мои сценарии были эффективными с точки зрения памяти, но в настоящее время мне нужно разбирать большие объемы HTML с помощью простой HTML DOM, и именно в синтаксическом анализе я испытываю проблемы с памятью. В попытке уменьшить объем памяти сценария, я попытался использовать DOMDocument вместо этого. Это тоже не помогает. Фактически, ошибка с памятью теперь запускается в другом месте сценария.

Мой вопрос: кто-нибудь испытал эту или подобную проблему? У вас есть какие-нибудь рекомендации?

Спасибо.

Related of "PHP-скрипты командной строки игнорируют директивы php.ini и ini_set ('memory_limit', …)"

Оказывается, проблема была вызвана защитой оболочки вилки оболочки, которая была включена на сервере, которая помещала ограничение жесткой памяти на все сценарии командной строки. Это было включено моим веб-хостом без моего ведома.

ваш PHP на cli может использовать другой php.ini для вашего apache php. попробуйте phpinfo() и проверьте его, используя ini-файл, который, по вашему мнению, использует.