Laravel 4.2, Amazon ec2 Linux
Фатальная ошибка PHP:
Allowed memory size of 262144 bytes exhausted (tried to allocate 3072 bytes) in /var/www/html/vendor/composer/ClassLoader.php on line 78
TL; DR Вы должны увеличить свой memory_limit
установка в php.ini. Вы едва позволяете своим сценариям использовать какую-либо память вообще.
Сообщение об ошибке Allowed memory size of 262144...
означает, что у вас есть memory_limit
настройка 256 кб. Это слишком низко. Для большинства полезных приложений вам нужно как минимум несколько МБ. Я хотел бы начать с 8 МБ и посмотреть, как оно идет.
Изменить memory_limit
установка. Теоретически, вы можете сделать это двумя способами: (1) отредактировать php.ini или (2) использовать ini_set()
,
На практике вы не всегда можете использовать ini_set('memory_limit', value);
, Во-первых, некоторые расширения, такие как suhosin, не позволяют сценариям устанавливать memory_limit
в этом случае. Во-вторых, вы должны быть осторожны, как вы это делаете. Например, вы предложили использовать ini_set('memory_limit', '1G');
, Но стенография (K
, M
, G
) работает только в php.ini, а не в ini_set
. Вам нужно будет ввести фактическое количество байтов (например, 1073741824
). Также, 1G
довольно чрезмерно для большинства целей; очень, очень немногим не вредоносным PHP-скриптам нужно что-то подобное. Даже довольно тяжелые фреймворки, такие как WordPress, обычно работают хорошо в пределах 64 МБ или около того, даже если загружено множество плагинов.
Выясните, какой файл php.ini вы используете (нередко бывает несколько плавающих, в зависимости от того, как вы установили вещи). Вы можете сделать это двумя способами:
<?php phpinfo();
php -i | grep php.ini
, Вы должны увидеть строку, которая говорит что-то вроде Loaded Configuration File => /etc/php.ini
(вывод может варьироваться в зависимости от системы, конечно).Отредактируйте только что найденный файл, изменив строку, начинающуюся с memory_limit =
к чему-то более подходящему, например
memory_limit = 8M
Не стесняйтесь увеличивать это число по мере необходимости, но я бы рекомендовал начать с малого (не 1G
) чтобы случайно не поставить свой сервер на колени.
Одно предостережение: если это машина для тестирования / разработки и вы используете отладчик или профилировщик, такой как xdebug, вы можете захотеть начать намного выше, и 1G
не безумен Но не начинайте с такого большого числа на производственной машине; пробейся к этому.
Других решений пока нет …