Я получаю эту неприятную ошибку Fatal error: Out of memory (allocated 18087936) (tried to allocate 77824 bytes)
. Странно, это 17,25 мб (выделено), и он попытался выделить 76 кб. Предел памяти составляет 128 МБ, и, как вы видите, он даже не близок к этому. В этот момент VPS получил ~ 400 МБ свободного барана. Это происходит только тогда, когда я публикую что-то и не все время.
Я нахожу это странным и не знаю, что может вызвать это.
Дайте мне знать, если вам нужна дополнительная информация.
Неустранимая ошибка: нехватка памяти при добавлении сообщения в WP
Ответ 1
Ошибка говорит о том, что ограничение памяти составляет 18M, а не 128M. Это означает, что где-то значение memory_limit имеет значение, отличное от 128M (локальное php.ini или само приложение, поскольку PHP может переопределить этот параметр во время выполнения).
Я бы предложил сначала создать файл с именем (скажем) phpinfo.php со следующим содержимым:
<?php
phpinfo();
?>
и поместите его там, где выполняется script. Затем войдите в файл с вашим браузером и найдите фактическое значение memory_limit. Если он по-прежнему показывает 128M как для "глобального", так и "локального" значения, то, вероятно, где-то в вашем коде есть "ini_set" ( "memory_limit", $value); звоните или что-то подобное. В противном случае, если он говорит 18M, найдите другие места, где это можно установить:
- Проверьте файл wp-config.php
- Проверьте наличие локального файла php.ini(зайдите на страницу phpinfo.php, чтобы узнать, где находится фактический загруженный файл php.ini)
- Проверьте файлы .htaccess, содержащие такую директиву
Ответ 2
Надеюсь, это поможет, поскольку у меня была такая же проблема:
У вас ограничено ограничение на собственную память WordPress, не ваш PHP memory_limit. Wordpress реализовал этот предел, чтобы предотвратить плохо написанные скрипты от закрытия всего PHP-интерпретатора. К сожалению, как вы заметили, это довольно баребоны.
Самый простой способ найти это - установить плагин Изменить ограничение памяти из репозитория Wordpress. Это позволяет исправить проблему без изменения файлов WP вручную.
По умолчанию 64M для плагина, вероятно, будет хорошо для вас.
В качестве альтернативы, если вы не хотите доверять стороннему плагину, добавьте следующую строку в wp-config.php
:
define('WP_MEMORY_LIMIT', '64M');
Ответ 3
Получил это от http://wordpress.org/support/topic/fatal-error-out-of-memory-messages?replies=24#post-1929111, подумал, что поделился бы этим с вами, ребята:
ЭТО ДОЛЖНО ВХОДИТЬ В ФАЙЛ WP-CONFIG, КОТОРЫЙ НАХОДИТСЯ В КОРНЕ НАСТРОЙКИ WORDPRESS:
ВВОД ПОСЛЕ:
define('ABSPATH', dirname(__FILE__).'/');
СЛЕДУЮЩИЙ:
define('WP_MEMORY_LIMIT', '64M');
ТАКЖЕ СОЗДАТЬ PHP.INI, КОТОРЫЙ ДОЛЖЕН БЫТЬ ЗАПОЛНЕН В ПЛОДУ ПЛАНОВ В WP-CONTENT:
`memory_limit = 128M; //Maximum amount of memory a script may consume (64MB)
`
max_execution_time = 45;
upload_max_filesize = 15M;
post_max_size = 30M;
Надеюсь, это поможет!
Ответ 4
Просто вариант, который помог мне отладить эти ошибки.
Если у вас есть доступ к .htaccess, вы можете попробовать следующее:
php_value upload_max_filesize 128M
php_value post_max_size 128M
php_value max_execution_time 300
php_value max_input_time 300
Если это не поможет, вы можете попробовать это, чтобы проверить настройки:
echo 'Max upload size: ' . ini_get('upload_max_filesize') . '<br />';
echo 'Max post size: ' . ini_get('post_max_size') . '<br />';
echo 'Memory limit: ' . ini_get('memory_limit');
Я надеюсь, что это сработает, для меня это было.
Ответ 5
Я не уверен, что это вызывает ошибку, но стоит проверить.
Многие из самых неустранимых жалких ошибок в памяти вызваны:
1) Определенные пользователем обработчики исключений, вызывая, таким образом, исключение.
2) Вышеупомянутый + пытается получить информацию о классе объекта, исходящего из исключения, а тестирование информации класса вызывает попытку автозагрузки, в которой автозагрузка выдает другое исключение и, следовательно, рекурсирует.
Вы сделали что-то противоречащее обработке ошибок WP или автозагрузке?
Ответ 6
Я устанавливаю wp-memory-usage плагин alexrabe на всех моих сайтах Wordpress.
Этот плагин поможет вам увидеть, что Wordpress видит с точки зрения использования вашей памяти PHP. Другие подходы могут показать вам настройки PHP на сервере, однако эти параметры часто переопределяются различными методами, чем ближе вы попадаете на отображаемую страницу в браузере.
Чтобы установить максимальную память → откройте свой любимый текстовый редактор и создайте файл php.ini; включить в файл следующую строку:
memory_limit = 256M
Поместите копию php.ini в корневой каталог Wordpress. Я также размещаю копии в:/wp-admin;/WP-контента; и/wp-includes.
Ответ 7
Добавьте define('WP_MEMORY_LIMIT', '256M');
в ваш файл wp-config.php. Это самый простой способ.
Ответ 8
Он выглядит как где-то на сайте, предел памяти перезаписывается, выполняет поиск по сайту в коде для ini_set('memory_limit'
и видит, что возвращается.
Ответ 9
Учитывая, что ваш phpinfo() script возвращает правильное значение для использования памяти, это, очевидно, устанавливается в Wordpress где-то и поэтому переопределяет предоставленные значения Apache, поэтому использование .htaccess для применения этого еще не будет работа.
Эта ссылка (http://codex.wordpress.org/Editing_wp-config.php#Increasing_memory_allocated_to_PHP) предполагает, что Wordpress делает свое собственное управление памятью по умолчанию, поэтому установка ('WP_MEMORY_LIMIT', '256M') в wp-config.php является логическим.
Если у вас есть доступ к оболочке на сервере, на котором размещен ваш сайт, я бы предложил перейти к DocumentRoot вашей Wordpress install и выполнить следующие команды:
grep -R "18M" *
grep -R -e '(WP_MAX_MEMORY_LIMIT|WP_MEMORY_LIMIT)' *
Это приведет к поиску через ваши файлы для строки 18M (значение, которое, по-видимому, имеет ограничение на доступность для чтения на человека) и параметры конфигурации для ограничения по умолчанию для Wordpress. Я подозреваю, что одна из этих команд вернет положительный результат. Затем вы должны изменить WP_MEMORY_LIMIT, как было предложено (хотя 256M может быть немного высоким - сначала попробуйте 64M, вы не хотите создавать потенциальные проблемы).