Ошибка 500 Internal Server Error: что это значит и как исправить Печать

  • Ошибка 500, Internal Server Error, 500
  • 0

Ошибка 500 Internal Server Error — одна из самых распространённых ошибок веб-серверов.

Она означает, что сервер получил запрос от пользователя, но во время обработки произошла внутренняя ошибка, из-за которой он не смог корректно выполнить действие.

В отличие от ошибок 404 или 403, проблема при ошибке 500 обычно находится не на стороне посетителя, а внутри сервера, сайта или приложения.

Ошибка может появиться при открытии главной страницы сайта, при входе в административную панель, отправке формы, загрузке файлов или выполнении любого другого действия.

Как выглядит ошибка 500

В зависимости от используемого веб-сервера сообщение может выглядеть по-разному:

500 Internal Server Error

или:

HTTP 500 Internal Server Error

Также могут встречаться варианты:

500 Error
The server encountered an internal error and was unable to complete your request
Internal Server Error

Текст ошибки зависит от настроек Apache, Nginx, PHP, CMS или приложения.

Основные причины ошибки 500

Ошибка 500 не указывает на конкретную проблему. Это общий ответ сервера, поэтому необходимо проверить несколько возможных причин.

Наиболее часто ошибка появляется из-за:

  • неправильных настроек .htaccess;

  • ошибок PHP-кода;

  • несовместимости версии PHP;

  • превышения лимитов памяти;

  • проблем с правами доступа к файлам;

  • ошибок CMS или плагинов;

  • повреждённых файлов сайта;

  • проблем с базой данных;

  • некорректной настройки веб-сервера;

  • нехватки ресурсов сервера;

  • ошибок после обновления сайта.

Проверьте логи сервера

Первое, что нужно сделать при появлении ошибки 500 — посмотреть логи.

Именно в логах обычно находится настоящая причина проблемы.

Apache

Для Apache часто используются следующие файлы:

/var/log/apache2/error.log

или:

/var/log/httpd/error_log

Посмотреть последние ошибки можно командой:

tail -n 100 /var/log/apache2/error.log

Пример ошибки:

PHP Fatal error: Allowed memory size exhausted

Это означает, что PHP превысил доступный лимит памяти.

Nginx

Для Nginx основной файл ошибок:

/var/log/nginx/error.log

Проверить последние записи:

tail -n 100 /var/log/nginx/error.log

PHP-FPM

Если используется PHP-FPM, ошибки могут находиться в отдельном журнале:

/var/log/php8.2-fpm.log

или:

/var/log/php-fpm/error.log

Путь зависит от версии PHP и операционной системы.

Проверьте файл .htaccess

Одна из самых частых причин ошибки 500 на Apache — неправильный файл .htaccess.

Например, ошибка может появиться после:

  • установки нового плагина;

  • изменения настроек CMS;

  • переноса сайта;

  • ручного редактирования правил Rewrite.

Для проверки временно переименуйте файл:

mv .htaccess .htaccess_backup

После этого обновите страницу сайта.

Если ошибка исчезла — проблема находится в .htaccess.

После проверки можно восстановить файл и исправить неправильное правило.

Проверьте синтаксис .htaccess

Некоторые директивы работают только на определённых версиях Apache.

Например, правило:

php_value memory_limit 256M

может вызвать ошибку 500, если сервер использует PHP-FPM.

В таком случае настройку необходимо выполнять через:

  • панель управления хостингом;

  • файл php.ini;

  • настройки PHP-FPM.

Проверьте права доступа к файлам

Неправильные права доступа могут привести к ошибке 500.

Обычно рекомендуемые значения:

Для директорий:

755

Для файлов:

644

Проверить права можно:

ls -la

Например:

-rw-r--r-- 644 index.php
drwxr-xr-x 755 wp-content

Не рекомендуется устанавливать права:

777

Это может создать проблемы с безопасностью.

Проверьте владельца файлов

После переноса сайта или распаковки архива файлы иногда получают неправильного владельца.

Например, сайт работает от пользователя:

www-data

а файлы принадлежат:

root

Проверить владельца:

ls -la

Исправить владельца можно:

chown -R www-data:www-data /var/www/site

Перед выполнением команды убедитесь, что используется правильный пользователь веб-сервера.

Проверьте версию PHP

После обновления PHP сайт может перестать работать.

Например:

  • сайт создан под PHP 7.4;

  • сервер обновили до PHP 8.3;

  • старый код больше не поддерживается.

Проверить текущую версию PHP:

php -v

Если используется панель управления, версию PHP можно посмотреть в настройках сайта.

Попробуйте временно переключить PHP на предыдущую стабильную версию и проверить работу сайта.

Проверьте лимит памяти PHP

Ошибка 500 часто возникает, когда PHP заканчивается доступная память.

Пример ошибки в логах:

Allowed memory size exhausted

Проверить текущий лимит:

php -i | grep memory_limit

Увеличить лимит можно в php.ini:

memory_limit = 256M

Также настройка может выполняться через:

  • .user.ini;

  • настройки панели управления;

  • конфигурацию PHP-FPM.

После изменения необходимо перезапустить PHP-FPM или веб-сервер.

Например:

systemctl restart php8.2-fpm

Проверьте ошибки CMS

Если ошибка появилась на WordPress, Joomla, Drupal или другой CMS, проблема часто связана с расширениями.

Наиболее частые причины:

  • новый плагин;

  • обновление темы;

  • конфликт расширений;

  • устаревший код.

Для WordPress можно временно отключить плагины.

Например, через SSH:

mv wp-content/plugins wp-content/plugins_backup

Если сайт заработал — проблема находится в одном из плагинов.

После проверки верните папку обратно:

mv wp-content/plugins_backup wp-content/plugins

Включите режим отладки

При разработке или поиске проблемы полезно включить отображение ошибок.

Например, в WordPress:

Файл:

wp-config.php

Добавьте:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);

После этого ошибки будут записываться в:

wp-content/debug.log

Не рекомендуется оставлять отображение ошибок включённым на рабочем сайте.

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

Проверьте базу данных

Иногда ошибка 500 появляется из-за проблем с базой данных.

Проверьте:

  • доступность MySQL/MariaDB;

  • правильность данных подключения;

  • состояние таблиц;

  • наличие повреждений.

Проверить статус базы данных:

systemctl status mariadb

или:

systemctl status mysql

Для MySQL можно проверить таблицы:

CHECK TABLE table_name;

Проверьте свободное место на сервере

Если на сервере закончился диск, приложения могут перестать работать.

Проверить свободное место:

df -h

Пример:

Filesystem      Size  Used Avail
/dev/sda1       80G   80G     0

Если свободного места нет, необходимо:

  • удалить старые логи;

  • очистить временные файлы;

  • увеличить диск;

  • проверить большие файлы.

Также проверьте количество inode:

df -i

Иногда место есть, но закончились доступные inode.

Проверьте нагрузку сервера

Ошибка 500 может появиться из-за нехватки ресурсов.

Проверьте:

top

или:

htop

Обратите внимание на:

  • загрузку CPU;

  • использование RAM;

  • процессы PHP;

  • MySQL;

  • количество одновременно работающих запросов.

Если сервер перегружен, сайт может возвращать ошибки даже при правильной конфигурации.

Проверьте лимиты PHP-FPM

При высокой нагрузке PHP-FPM может достигнуть ограничения процессов.

В логах может появиться:

server reached pm.max_children setting

Проверить настройки можно в:

/etc/php/*/fpm/pool.d/www.conf

Основные параметры:

pm.max_children
pm.start_servers
pm.max_requests

Если сайт получает много запросов, необходимо правильно настроить PHP-FPM.

Проверьте настройки Nginx или Apache

Ошибка может быть связана с изменениями конфигурации веб-сервера.

Для Nginx проверить конфигурацию:

nginx -t

Для Apache:

apachectl configtest

Если есть ошибка, сервер покажет файл и строку с проблемой.

Проверьте изменения перед появлением ошибки

Если сайт работал нормально и внезапно появилась ошибка 500, вспомните последние изменения:

  • обновление CMS;

  • установка плагина;

  • изменение PHP;

  • изменение конфигурации сервера;

  • перенос сайта;

  • изменение DNS;

  • установка SSL.

Часто причина находится именно в последнем изменении.

Ошибка 500 после установки SSL

Иногда ошибка появляется после включения HTTPS.

Причины могут быть:

  • неправильный редирект HTTP → HTTPS;

  • ошибка в .htaccess;

  • конфликт плагинов SSL;

  • неправильная настройка виртуального хоста.

Проверьте конфигурацию веб-сервера и правила перенаправления.

Ошибка 500 после переноса сайта

После миграции сайта проверьте:

  • правильность настроек базы данных;

  • права файлов;

  • владельца файлов;

  • версию PHP;

  • наличие всех необходимых расширений PHP;

  • пути в конфигурационных файлах.

Например, WordPress может содержать старые данные подключения к базе:

define('DB_NAME', 'database');
define('DB_USER', 'user');
define('DB_PASSWORD', 'password');

Проверьте, что эти данные соответствуют новой базе.

Быстрый алгоритм поиска ошибки 500

Если нужно быстро найти причину, выполните следующие шаги:

  1. Посмотрите error log веб-сервера.

  2. Проверьте последние изменения на сайте.

  3. Проверьте .htaccess.

  4. Проверьте версию PHP.

  5. Проверьте лимит памяти PHP.

  6. Проверьте права файлов.

  7. Проверьте владельца файлов.

  8. Проверьте плагины и расширения CMS.

  9. Проверьте свободное место на сервере.

  10. Проверьте нагрузку сервера.

В большинстве случаев причина находится именно в логах.

Как предотвратить появление ошибки 500

Чтобы снизить вероятность появления ошибки:

  • регулярно обновляйте CMS и плагины;

  • делайте резервные копии;

  • не устанавливайте неизвестные расширения;

  • следите за ресурсами сервера;

  • используйте актуальные версии PHP;

  • правильно настраивайте права доступа;

  • контролируйте логи ошибок;

  • используйте тестовый сервер перед обновлением сайта.


Помог ли вам данный ответ?

« Назад