Подтвердить что ты не робот

Неустранимая ошибка: нехватка памяти при добавлении сообщения в WP

Я получаю эту неприятную ошибку Fatal error: Out of memory (allocated 18087936) (tried to allocate 77824 bytes). Странно, это 17,25 мб (выделено), и он попытался выделить 76 кб. Предел памяти составляет 128 МБ, и, как вы видите, он даже не близок к этому. В этот момент VPS получил ~ 400 МБ свободного барана. Это происходит только тогда, когда я публикую что-то и не все время. Я нахожу это странным и не знаю, что может вызвать это. Дайте мне знать, если вам нужна дополнительная информация.

4b9b3361

Ответ 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, вы не хотите создавать потенциальные проблемы).