У меня есть PHP-скрипт на сервере Linux, который я выполняю с помощью командной строки следующим образом: php script.php
(обратите внимание, что он не выполняется как часть веб-запроса).Выполнение скрипта PHP, превышающее ограничение памяти, хотя ограничение выше
memory_limit
в файле «php.ini» сервера установлено значение «512M», и я проверил это следующим образом:
# echo "<?php phpinfo(); ?>" | php | grep memory_limit
memory_limit => 512M => 512M
Теперь проблема в том, что, когда я выполнить сценарий в вопросе через php script.php
, в конце концов, я получаю следующее сообщение об ошибке:
Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 600283 bytes) in ...
268435456 байт = ~ 268 МБ, который, безусловно, ниже, чем 512MB
Что Коула d происходит здесь? Возможно ли, что есть еще один системный уровень, который мне не хватает? Или php-процессы по существу ограничены ~ 268mb?
сделал ваш перезапуск apache? вы проверяли, есть ли memory_limit в другом месте, который переопределяет копию .ini? проверка в командной строке бессмысленна, так как обычно используется РАЗЛИЧНЫЙ .ini-файл, отличный от sapi (aka web-based). вам нужно проверить 'php_info()' внутри скрипта, в котором у вас возникла проблема. –
Дамп [memory_get_usage] (http://php.net/manual/fr/function.memory-get-usage.php) на линии перед сбоем сценария –
Кроме того, расширение Suhosin может поместить свою собственную крышку на ограничение памяти. Вы это проверили? –