Я пытаюсь запустить простой .php
файл в своей локальной среде:
(Ubuntu 15.10 - Intel® Core™ i7-4600U CPU @ 2.10GHz × 4 - 64-бит - 8 ГБ ОЗУ)
Итак, вы видите, что у меня более 60% свободной оперативной памяти, но я не знаю, почему у меня всегда возникает эта ошибка:
Erreur : Allowed memory size of 4244635648 bytes exhausted (tried to allocate 4294967674 bytes).
Я попытался выполнить решение этой похожей проблемы:Связь. Но это не решает мою проблему.
Спасибо
решение1
В PHP есть настройка, которая ограничивает объем памяти, который может использовать один скрипт. Не имеет значения, сколько всего оперативной памяти у вашей системы, если вы превысите это значение.
Если вы работаете в консоли, то файл, который на это влияет, скорее всего, /etc/php5/cli/php.ini и содержит строку следующего вида:
memory_limit = XXXXXXX
Чтобы полностью снять ограничение, измените его следующим образом:
memory_limit = -1
Однако, как прокомментировали другие, ваш скрипт уже пытается использовать более 4 ГБ ОЗУ. Возможно, вам следует переосмыслить то, что вы делаете, или поискать ошибки в коде, которые могут вызвать это, например, бесконечный цикл. Большинство скриптов PHP, даже скриптов CLI, должны использовать менее 256 МБ, даже для самых сложных задач. PHP не предназначен для загрузки файла размером 2 ГБ в память и работы с ним в переменных или для выгрузки целых баз данных в массивы. Многие программисты, с которыми я работал, совершают такие ошибки. Вместо этого поместите это хранилище туда, где оно работает лучше всего — оставьте его в БД и работайте с ним построчно или оставьте его в файловой системе и сделайте то же самое.
И если это веб-скрипт, а не то, что вы запускаете в CLI, вы, вероятно, не хотите возиться с настройкой memory_limit, по крайней мере, не в районе 4 ГБ или больше. Это плохая идея для веб-сервера, который обслуживает несколько клиентов.