2015-07-20 2 views
3

У меня есть 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?

+2

сделал ваш перезапуск apache? вы проверяли, есть ли memory_limit в другом месте, который переопределяет копию .ini? проверка в командной строке бессмысленна, так как обычно используется РАЗЛИЧНЫЙ .ini-файл, отличный от sapi (aka web-based). вам нужно проверить 'php_info()' внутри скрипта, в котором у вас возникла проблема. –

+0

Дамп [memory_get_usage] (http://php.net/manual/fr/function.memory-get-usage.php) на линии перед сбоем сценария –

+0

Кроме того, расширение Suhosin может поместить свою собственную крышку на ограничение памяти. Вы это проверили? –

ответ

-6

Скорее всего, настройки php.ini не вступили в силу. Перезагрузите сервер еще раз и запустите скрипт с помощью phpinfo(), чтобы убедиться, что ваши изменения на месте.

-1

Вы можете использовать PHP -i и Grep вывод, чтобы проверить, что вы обновили правильные php.ini,

PHP -i | grep php.ini

+0

Ну, если консоль говорит memory_limit => 512M => 512M, то все в порядке с php.ini – pamelus

Смежные вопросы