500 Internal Server Error при переходе на php 8.1

500 Internal Server Error

Добрый день! Уважаемые читатели и гости IT блога Pyatilistnik. В предыдущей публикации мы с вами ситуацию, что WordPress стал по-странному загружать картинку выдавая ошибку "Сервер не может обработать изображение". В сегодняшней статье я еще покажу интересную ситуацию с которой я столкнулся после обновления WordPress до версии 6.2 и php 8.1, на ряде страниц у меня пропало тело записи и код высвечивал вот такую формулировку "500 Internal Server Error". Давайте разбираться в чем дело и как это исправить.

Ошибка 500 Internal Server Error и ее причины

Вот такой вид имели страницы с этим статусом. Съехала верстка, отсутствовал сайтбар, отображался только заголовок.

Ошибка отображения записи WordPress

Для поисковых систем это выглядело вот так, например в кабинете вебмастера от Яндекс. При обходе его роботов по страницам сайта он получал код ответа 500 Internal Server Error.

500 Internal Server Error в Webmaster Яндекса

Если ваши страницы при посещении пауками поисковых систем выглядят так и не предоставляют доступ к контенту, то это очень плохо, так как они могут скоро вылететь из индекса.

Ошибка 500 Internal Server Error в WordPress может возникать по различным причинам. Вот некоторые из наиболее распространенных:

  1. Проблемы с плагинами: Иногда плагины могут конфликтовать друг с другом или с темой. Попробуйте отключить все плагины и включать их по одному, чтобы выявить проблемный.
  2. Ошибки в файле .htaccess: Поврежденный файл .htaccess может вызывать эту ошибку. Попробуйте переименовать его (например, в .htaccess_old) и затем обновить постоянные ссылки в настройках WordPress, чтобы создать новый файл.
  3. Проблемы с темой: Иногда ошибка может быть связана с вашей темой. Попробуйте переключиться на стандартную тему WordPress (например, Twenty Twenty-One) и посмотрите, исчезнет ли ошибка.
  4. Недостаток памяти: Если ваш сайт исчерпал выделенный лимит памяти PHP, это может вызвать ошибку.
  5. Попробуйте увеличить лимит памяти, добавив следующую строку в файл wp-config.php:

    define('WP_MEMORY_LIMIT', '256M');

  6. Ошибки в коде: Если вы вносили изменения в код (например, в файлы темы или плагинов), это может привести к ошибкам. Проверьте код на наличие синтаксических ошибок.
  7. Проблемы с сервером: Иногда ошибка может быть вызвана проблемами на стороне сервера или хостинга. Свяжитесь с вашим хостинг-провайдером для получения информации.
  8. Версия PHP: Убедитесь, что ваша версия PHP совместима с версией WordPress и используемыми плагинами/темами.
  9. Логи ошибок: Проверьте логи ошибок сервера, чтобы получить более подробную информацию, что именно вызывает ошибку.

Таких страниц было немного из 3000 около 130-150, но и это тоже неприятно, так как в целом негативно для проекта и может негативно влиять и на производительность.

На уровне хостинга и сервера я все проверил, далее я полез смотреть логи обращения в файле access..log. Вот пример попытки парсера Яндекс обратиться по этой странице:

 [20/Sep/2024:17:07:29 +0300] "GET /plagin-sshautoconnect-dlya-ssh-podklyucheniy-cherez-vcenter/ HTTP/1.0" 500 6787 "https://webmaster.yandex.ru/site/https:pyatilistnik.org:443/indexing/indexing/?samplesType=url&filters=%7B%22CURRENT_CODE%22%3A%5B%7B%22name%22%3A%22EQUAL%22%2C%22value%22%3A%22HTTP_500_INTERNAL_SERVER_ERROR%22%7D%5D%7D&page=1" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36" 2025 6787 1 1261781

500 Internal Server Error в логах вебсервера

Читайте так же - Как опубликовать принтеры в Active Directory

Логи мне особо не помогли, я стал искать дальше, тут подкупает радовало, то что такая ситуация была не со всем записями, значит нужно точно понять, что не так с этими. Перехожу к редактированию записи со статусом 500 Internal Server Error. Идея состояла в том, чтобы посмотреть что в тексте и коде не так.

  • Первым делом я удалил все содержимое записи и сохранил ее, все стало работать.
  • Далее я продолжал сокращать постепенно. что из записи я удаляю и в конечном итоге я нашел виновника
  • Вся проблема оказалась из-за внешней ссылки/ ссылок (http/https, которые я поменял на // и добавил rel="nofollow")

Причина ошибка 500 Internal Server Error

После сохранения записи она стала корректно отображаться.

Устраненная ошибка 500 Internal Server Error

После пары недель изучения логов мне удалось выявить все записи у которых были проблемы, в результате чего я заметил резкое снижение нагрузки на базу данных и сам сайт. Это скриншот до устранения страниц с кодом HTTP/1.0" 500. Как видно на базе данных нагрузка была в 27%.

Нагрузка на сайт

Новая нагрузка выглядит вот так, базе данных стало легче на 16% и это не предел, впереди переход на новую версию MySQL и PHP 8.3.

 

Нагрузка на сайт после работ

На этом у меня все. Надеюсь у вас все получилось, с вами был Иван Сёмин, автор и создатель IT портала Pyatilistnik.org.

Оцените статью
Настройка серверов windows и linux
Добавить комментарий