PHP CLI не соблюдает ограничение памяти в php.ini
Я использую drush, приложение php для командной строки, для управления веб-сайтом drupal. Я запускаю команду для импорта большого количества данных, что приводит к тому, что я превышаю ограничение памяти php.
PHP Fatal error: Allowed memory size of 536870912 bytes exhausted ...
Что составляет 512 МБ, если я правильно делаю математику (536870912 / 1024 / 1024 = 512). Я изменил директиву в php.ini, которую использует drush:
$> drush status
...
PHP configuration : /etc/php5/cli/php.ini
$> grep memory /etc/php5/cli/php.ini
; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 1024M
Но я все еще бью предел в 512 МБ! Я работаю на виртуальной машине, чьи настройки памяти я изменил с 512 до 1025 МБ ОЗУ, чтобы можно было запускать drush.
$> free -m
total used free shared buffers cached
Mem: 1010 578 431 0 14 392
-/+ buffers/cache: 172 837
Swap: 382 0 382
Таким образом, он говорит, что у него есть около 431 МБ свободного места, теперь, когда я увеличил виртуальную машину до 1024. Я думаю, половина памяти используется для запуска графического интерфейса, но я не понимаю, как работает графический интерфейс нормально, когда виртуальная машина было 512 МБ оперативной памяти.
Почему PHP Cli все еще превышает ограничение памяти 512 МБ? Если он достиг предела системной памяти, он не должен умирать около 431 МБ, что free
команда говорит доступно?
3 ответа
Скорее всего, у вас есть более одного файла php.ini (отметьте что-то вроде /etc/php5/cli
) и редактируете не тот или у вас есть ini_set('memory_limit', '512M');
установка в settings.php
файл или тому подобное, который становится включенным.
Для других людей, которые задают этот вопрос, например, я, выполните следующую команду:
php --ini
Чтобы увидеть, какую конфигурацию использует php-cli. Вы увидите что-то вроде этого:
Loaded Configuration File: /etc/php/7.1/cli/php.ini
Или вот так:
Loaded Configuration File: /opt/php-7.0.26/etc/php.ini
Возможно, вы пытаетесь изменить конфигурацию в неправильном файле.
В Mac например
/etc/php5/cli для командной строки, поэтому вам нужно изменить /etc/php5/cgi/php.ini
это должно работать!