Я пытаюсь разместить несколько веб-страниц самостоятельно, используя Uniform Server WAMP package (Apache версии 2.4.20, PHP версии 7.0.8), один из них – простое портфолио Bootsrap, а другое – интернет-магазин WordPress с использованием WooCommerce и других плагинов ,
Время от времени мой сайт на WordPress перестает работать до тех пор, пока я не перезапущу службу Apache. Я нахожу главный журнал Apache, заполненный этими ошибками:
Ошибка VirtualAlloc (): [0x00000008] Недостаточно памяти для обработки этой команды. Ошибка VirtualFree (): [0x000001e7] Попытайтесь получить доступ к недействительному адресу.
И мои магазины журнала ошибок Apache полны из них:
[Tue Aug 23 14: 49: 59.357235 2016] [: error] [pid 11300: tid 1768] [клиент 88.119.96.56:52269] PHP Неустранимая ошибка: Недостаточно памяти (выделено 2097152) (попытался выделить 4096 байт) в D : \ Software \ UniServerZ \ vhosts \ *** \ wp-includes \ pomo \ mo.php в строке 276, референт: http: //***/wp-admin/edit.php? Post_type = shop_order
линии отличаются 268, 270 и 276, а в mo.php они выглядят так:
$entry = new Translation_Entry(); // 268 ... $parts = explode(chr(4), $original); // 270 ... $parts = explode(chr(0), $original); // 276
Весь исходный код можно найти здесь .
Тем временем моя страница с портфолио работает без проблем.
Я увеличил memory_limit в php.ini до define('WP_MEMORY_LIMIT', '256M');
, добавил define('WP_MEMORY_LIMIT', '256M');
и define('WP_MAX_MEMORY_LIMIT', '512M');
к wp-config.php , но по крайней мере два раза в неделю мой сайт недоступен и заполняет сообщения, упомянутые выше.
Мои сайты не генерируют много трафика, сервер имеет 16 ГБ оперативной памяти и полупустой 512 ГБ SSD, пожалуйста, помогите мне понять или выяснить, что вызывает проблему, потому что текущие журналы говорят мне очень мало.
Обновление 1
Я нашел интересную строку, прежде чем те, которые VirtualAlloc и VirtualFree терпят неудачу:
[Tue Aug 23 21: 02: 40.298272 2016] [: error] [pid 504: tid 1836] [client 191.96.249.54:36032] script 'D: /Software/UniServerZ/www/xmlrpc.php' не найден или не может стат
Похоже, я был жертвой попытки взлома, отключил xmlprc, добавив эти строки в файл .htaccess:
<Files "xmlrpc.php"> Order Allow,Deny Deny from all </Files>
Надеюсь это поможет.
Обновление 2 – через несколько дней
Похоже, проблема решена, время от времени я обнаруживаю, что клиент отрицает ошибки конфигурации сервера, но веб-сайт больше не работает.
Обновление 3 – через несколько недель
Ошибки VirtualAlloc () и VirtualFree () возвращаются, без каких-либо подозрительных запросов на скрипт, журнал просто заполнен указанными ошибками, и в моем журнале магазинов есть куча упомянутых ошибок из памяти. Возможно ли, каким образом сделать ошибки Apache более подробными / подробными, чтобы выяснить, какая команда запускает недостаточную ошибку хранилища или какой недопустимый адрес был предпринят для доступа?
Обновление 4 – через несколько месяцев
После некоторого времени регулярного использования сайта и перезапуска Apache время от времени ошибки просто прекратились, я подозреваю, что некоторые из используемых плагинов были обновлены, и теперь память не течет, и все работает до следующей ошибки …
Не уверен, что это может помочь, поскольку WordPress не использует собственные PHP-сессии, но может быть, что некоторые плагины используют.
Моя ситуация: ОС Windows, PHP 7.0.6 – 7.0.11
Ошибка VirtuaAlloc из-за использования сеанса php. http://php.net/manual/en/features.sessions.php Я удалил / заменил все функции php session_ собственными.
Воспроизведение Howto: session_start (); выполните синтаксический анализ некоторого огромного файла xml (150 МБ или более), который запускает несколько раз один и тот же скрипт одновременно на сервере Apache.