Оглавление
Время чтения: 11 минут
Ошибка 500 Internal Server Error возникает, когда сервер не может достоверно определить, почему он не в состоянии обработать поступивший от пользователя запрос. Сайт становится недоступным для посетителей и для поисковых роботов. Полностью теряются трафик и конверсии. Ситуация для бизнеса критическая. Как ее исправить - расскажем в статье.
Что может стать причиной
- Запрет доступа.
Иногда при переезде на новый хостинг или расширении структуры ресурса вебмастера забывают открыть доступ к файлам и каталогам на сервере.
- Ошибки в .htaccess.
Из-за неправильно прописанных директив в .htaccess. у web-сервера Apache возникают проблемы с корректным прочтением файлов сайта.
- Некорректное расширение.
Обычно эта проблема касается PHP и CGL скриптов. У них может быть неправильное расширение или устаревшая, неподдерживаемая версия.
- Превышение времени ожидания исполнения скрипта.
Ошибка возникает, если истекает тайм-аут обработки внешних PHP.
- Нехватка выделенной памяти.
Большинство хостингов лимитируют объем оперативной памяти на исполнение скриптов.
- Неправильные настройки CMS.
Некоторые плагины систем управления сайтом - особенно это касается WordPress и Joomla - могут вызывать ошибку 500 из-за отсутствия обновлений или несовместимости.
Как диагностировать
Необходимо открыть файл “error.log”. Для этого можно воспользоваться клиентом FileZilla или панелью управления хостингом/VPS.
В error.log будет доступен детальный отчет об ошибке. Сайты, работающие на серверах Microsoft IIS, выдают более точный код ошибки. Например, 500,19 - “Данные конфигурации неверны”.
Способы исправления
Порядок устранения ошибки зависит от природы ее возникновения.
Неверный код в .htaccess
Проверить, влияют ли строки в файле на работу ресурса, можно через два пути:
- скопировать документ на компьютер и удалить его с сервера;
- переименовать в test или дать любое другое название;
Если после этого ошибка 500 устранится, необходимо найти некорректные директивы, ее вызывающие.
Можно сделать это вручную. Для этого:
- комментируем все строки кода, кроме первой;
- обновляем файл на сервере;
- проверяем работоспособность файла.
Если ошибка не устранена, проделываем перечисленные действия последовательно с каждой строкой в коде. При отсутствии ошибки проверяем правильность написания незакомментированной директивы.
Чтобы не тратить время, для начала диагностику .htaccess можно провести с помощью автоматического тестировщика - например, онлайн-сервиса htaccess test. Для проверки кода нужно ввести в окно содержимое файла и указать адрес сайта. Тестировщик выдаст отчет, в котором выделит красным некорректные директивы.
Иногда строки оказываются неверными из-за незаметной замены латинских букв на русские - чаще всего - “с”. Обнаружить и исправить проблему можно через сервис проверки орфографии text.ru - он покажет неправильные символы. Вам останется только исправить их и перезалить документ.
Отсутствуют права доступа
Для каталогов и файлов существует несколько уровней доступа:
- чтение - пользователь может просматривать содержимое файла или папки;
- запись - пользователь может создавать, удалять и редактировать файлы в указанной папке;
- исполнение - пользователь может запускать обработку скриптов.
Обычно для файлов выставляют числовое значение доступа “644”, для папок и директорий - “755”.
Параметр 644 означает, что владелец ресурса может читать, записывать и редактировать файлы, а остальные пользователи - только читать. 755 - владелец имеет полный доступ, а пользователям разрешено чтение файлов и исполнение скриптов. Редактируются права через хостинг или бесплатную клиентскую программу FileZilla.
- Входим в корневую директорию сервера, введя необходимые учетные данные.
- Если нужно загрузить на сервер новые файлы или папки, перетаскиваем их с локального компьютера.
- Включаем отображение скрытых файлов.
- Выделяем интересующие объекты. В контекстном меню выбираем пункт “Права доступа к файлу…”. В открывшемся окне вводим необходимое числовое значение или отмечаем галочками соответствие категорий прав и групп пользователей.
Иногда для обновления доступов требуется перезагрузить физический сервер, на который загружен сайт.
Медленная работа скриптов
Первый вариант решения проблемы - оптимизация PHP. Для выявления и устранения избыточного кода лучше обратиться к опытному программисту. Понять, точно ли в перегруженности скрипта кроется ошибка, можно с помощью онлайн-сервисов по тестированию кода.
Второй вариант - увеличение времени, отведенного на обработку. Но эта операция доступна только владельцам выделенных серверов. На виртуальном хостинге расширить оперативное время не получится.
Устаревший PHP
Версию и режим работы PHP можно обновить через хостинг-панель. Конкретные действия зависят от того, какой менеджер для управления файлами вы используете.
Некорректные CGI-скрипты
Скрипты CGI чаще всего используются при взаимодействии пользователя с веб-страницей - отправке форм, комментариев, оценок. Второе применение - сбор данных о пользователях, то есть те самые cookies.
В CGI могут возникать различные ошибки.
- Неверный формат окончания строк.
Для серверов, работающих под управлением систем Unix, правильным окончанием строки будет символ “\n”. Для Windows-платформ верный символ - “\m”. Проверить табуляцию можно с помощью специальных реакторов - например, Notepad++.
- Некорректные права доступа.
Как говорилось ранее, верное числовое значение доступа для исполнительных файлов - 755.
- Неправильные HTML-заголовки.
Информацию об ошибках в заголовках можно проверить в файле ‘error.log’.
Нехватка выделенной памяти
При превышении лимита оперативной памяти, установленной хостингом, стоит предпринять следующие действия.
- Проверка работоспособности скриптов.
Необходимо скачать файл конфигурации php.ini на компьютер и проаудировать его на наличие ошибок. Во время тестирования необходимо включить следующие функции:
- error_reporting = E_ALL
- display_errors = On
- display_startup_errors = On
После активации этих команд при запуске файла будут выводиться все репорты об ошибках.
- Изменение настроек.
Если ресурс расположен на VPS сервере, можно скорректировать параметр memory_limit в файле конфигурации. Узнать оптимальное значение лимита можно только опытным путем, через обновление php.ini и проверку ответа сайта.
- Обращение в техподдержку.
Если код скрипта оптимизирован, но ошибка 500 не исчезает, стоит обратиться в техническую поддержку хостинга.
Ошибки, связанные с CMS
Часто проблемы возникают из-за плагинов или тем, используемых системой управления сайта - особенно это касается CMS WordPress. Схема действий в таком случае следующая.
- Проверить файл .htaccess и, если ошибка возникает из-за него, временно запретить запись в него всем пользователям, прописав параметр доступа “644”.
- Изменить используемую тему, чтобы проверить ее работоспособность.
- Деактивировать плагины. Действовать придется методом перебора, последовательно отключая каждый установленный плагин, пока ошибка не будет устранена.
- Расширить лимит оперативной памяти. В конец файла конфигурации wp.config.php добавить строку define(‘WP_MEMORY_LIMIT’, ’64M’).
Как исправить ошибку 500 со стороны пользователя
Иногда корень проблемы кроется не в сервере или html коде сайта, а в устройстве/браузере пользователя. В этом случае можно:
- перезагрузить страницу - через иконку в браузере или кнопку F5 на клавиатуре;
- почистить кэш и cookies - чтобы прогружалась свежая версия страницы, а не сохраненная (в которой могла быть ошибка);
- проверить браузер на вирусы - особенно если ошибка 500 возникает часто и на разных ресурсах. Вредоносные программы могут замедлять или обрывать связь с сервисом;
- проверить актуальность версии браузера и ОС;
- обратиться к владельцу ресурса, если вы думаете, что он еще не знает о возникшей проблемы с его сайтом;
- просто подождать - скорее всего, неисправность скоро будет устранена.
Заключение
Ошибка 500 связана с невозможностью сервера обработать команды, поступающие от браузера пользователя. Она может возникать из-за некорректных директив в файле .htaccess или PHP/CGI скриптах, нехватки оперативной памяти для обработки скрипта, превышения тайм-аута при исполнении PHP.
Диагностировать и устранять ошибку рекомендуется с помощью специальных сервисов. В первую очередь необходимо проверять файлы конфигурации, директивы .htaccess и плагины CMS.
В студии AppFox можно подать заявку на программирование, создание игр или заказать разработку приложений https://appfox.ru и получить бесплатную консультацию по ценам и услугам.