Неустранимая ошибка: допустимый объем памяти исчерпан после обновления MAMP - PullRequest
0 голосов
/ 13 февраля 2020

Я знаю, что этот вопрос можно найти много времени на этом форуме и inte rnet. Но я не могу найти ответ на мой конкретный c вопрос.

Я работаю на сайте Drupal, и после обновления MAMP с 5.5 до 5.6 я получаю следующую ошибку: Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) при запуске composer require в терминале.

Я обновил php .ini tot 1024 МБ вместо 128 МБ текущей версии php, которую я использую через MAMP. Когда я добавляю файл php к своему root с <?php phpinfo(); ?>, я вижу, что память такая, как я хочу, 1024MB. Когда я смотрю на местоположение INI-файла php, я вижу, что оно находится в папке MAMP.

Но я все еще получаю сообщение об ошибке. Когда я запускаю этот php -r "echo ini_get('memory_limit').PHP_EOL;" в своем терминале, я снова вижу 128 МБ. Когда я пытаюсь найти php ini, который работает с использованием php -i|grep 'php.ini', я получаю:

Configuration File (php.ini) Path => /etc

Так что, похоже, файл php .ini находится где-то еще. Но я не знаю где и не могу это изменить. Как я могу решить эту проблему?

Я также пытался изменить composer память, используя php -d memory_limit=-1 /usr/bin/composer, но это тоже не решило проблему.

Мой вопрос, как я могу решить эту проблему? проблема? Как я могу найти файл php .ini, который используется. Или как я могу изменить ограничение памяти?

Обновление:

Запуск php -i | grep 'Configuration File' в выходах терминала:

Loaded Configuration File => (none)

И, может быть, хорошо знать, что у меня включена опция Сделать эту версию доступной для командной строки в секции MAMP php.

Ответы [ 2 ]

0 голосов
/ 14 февраля 2020

В итоге я добавил файл php.ini в папку /etc на моем компьютере. Таким образом, повышение php memory_limit сработало. И проверка его в терминале действительно показала мне правильное значение. Но, как уже сказал Алистер, это не решило проблему. Проблема была не в php.ini memory_limit.

. Я обнаружил, что использование COMPOSER_MEMORY_LIMIT=-1 в терминале в начале моей сессии ограничивает ограничение памяти во время этой терминальной сессии. Это решило проблему.

После этого я добавил alias composer="COMPOSER_MEMORY_LIMIT=-1 composer" в свой файл bash и знаю, что все работает так, как я ожидал.

0 голосов
/ 13 февраля 2020

Изменение объема памяти в php .ini не поможет - это предел того, что используется версией PHP веб-сервера - и слишком большое количество доступного для веб-сервера может вызвать проблемы (при минимум при работе в рабочей среде).

Composer, когда он запускается из командной строки, по умолчанию установит ограничение на 1 610 612 736 байт - 1,5 ГБ .

Поскольку вы, очевидно, все еще используете PHP 5.6, это также очень серьезная проблема. PHP 7+ намного эффективнее с памятью, чем до дата версии composer.

Наконец, чтобы действительно решить проблему: ограничьте ваше требование быть более точным c, так как это снижает использование памяти.

...