Как получить ошибку 500

I need to send "500 Internal Server Error" from an PHP script under certain conditions. The script is supposed to be called by a third party app. The script contains a couple of die("this happend")

You may use the following function to send a status change:

function header_status($statusCode) {
    static $status_codes = null;

    if ($status_codes === null) {
        $status_codes = array (
            100 => 'Continue',
            101 => 'Switching Protocols',
            102 => 'Processing',
            200 => 'OK',
            201 => 'Created',
            202 => 'Accepted',
            203 => 'Non-Authoritative Information',
            204 => 'No Content',
            205 => 'Reset Content',
            206 => 'Partial Content',
            207 => 'Multi-Status',
            300 => 'Multiple Choices',
            301 => 'Moved Permanently',
            302 => 'Found',
            303 => 'See Other',
            304 => 'Not Modified',
            305 => 'Use Proxy',
            307 => 'Temporary Redirect',
            400 => 'Bad Request',
            401 => 'Unauthorized',
            402 => 'Payment Required',
            403 => 'Forbidden',
            404 => 'Not Found',
            405 => 'Method Not Allowed',
            406 => 'Not Acceptable',
            407 => 'Proxy Authentication Required',
            408 => 'Request Timeout',
            409 => 'Conflict',
            410 => 'Gone',
            411 => 'Length Required',
            412 => 'Precondition Failed',
            413 => 'Request Entity Too Large',
            414 => 'Request-URI Too Long',
            415 => 'Unsupported Media Type',
            416 => 'Requested Range Not Satisfiable',
            417 => 'Expectation Failed',
            422 => 'Unprocessable Entity',
            423 => 'Locked',
            424 => 'Failed Dependency',
            426 => 'Upgrade Required',
            500 => 'Internal Server Error',
            501 => 'Not Implemented',
            502 => 'Bad Gateway',
            503 => 'Service Unavailable',
            504 => 'Gateway Timeout',
            505 => 'HTTP Version Not Supported',
            506 => 'Variant Also Negotiates',
            507 => 'Insufficient Storage',
            509 => 'Bandwidth Limit Exceeded',
            510 => 'Not Extended'
        );
    }

    if ($status_codes[$statusCode] !== null) {
        $status_string = $statusCode . ' ' . $status_codes[$statusCode];
        header($_SERVER['SERVER_PROTOCOL'] . ' ' . $status_string, true, $statusCode);
    }
}

You may use it as such:

<?php
header_status(500);

if (that_happened) {
    die("that happened")
}

if (something_else_happened) {
    die("something else happened")
}

update_database();

header_status(200);

#1

IgorZip

    Новый участник

  • Members
  • Pip

  • 8 сообщений
  • ФИО:Igor Zip

Отправлено 28 января 2019 — 14:19

Есть поле для вставки ссылки на картинку. После вставки ссылки она парсится и подтягивается изображение в соседнее поле. Как мне можно вызвать 500 ошибку связаную с этим полем. Пробовал много-много символов вводить- ничего

  • 0

  • Наверх


#2

baruk

baruk

    Новый участник

  • Members
  • Pip

  • 11 сообщений

Отправлено 28 января 2019 — 14:42

Интересно, с чего вы решили, что это вообще возможно? Если сервис написан нормально, то не получится =)

А так вариантов масса, считай любая негативная проверка может дать подобное поведение.

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

Если есть доступ к коду, то можно посмотреть, какие проверки не предусмотрены в нем и при каких условиях выкинется необработанное исключение

  • 0

  • Наверх


#3

IgorZip

IgorZip

    Новый участник

  • Members
  • Pip

  • 8 сообщений
  • ФИО:Igor Zip

Отправлено 28 января 2019 — 14:57

Интересно, с чего вы решили, что это вообще возможно? Если сервис написан нормально, то не получится =)

А так вариантов масса, считай любая негативная проверка может дать подобное поведение.

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

Если есть доступ к коду, то можно посмотреть, какие проверки не предусмотрены в нем и при каких условиях выкинется необработанное исключение

Спасибо)

  • 0

  • Наверх


#4

Spock

Отправлено 28 января 2019 — 15:50

делается легко

устанавливаем перехватывающий прокси типа ZAP

и перехватываем ответ сервера и меняем код ответа на 500 и тело ответа меняем на что угодно, например «123»

  • 0

  • Наверх


#5

baruk

baruk

    Новый участник

  • Members
  • Pip

  • 11 сообщений

Отправлено 28 января 2019 — 19:07

перехватываем ответ сервера и меняем код ответа на 500 и тело ответа меняем на что угодно, например «123»

Не опасно ли так, не зная как реально возвращаются 500ые?  Подсунем стандартный ответ веб-сервера, а реально в ответ прилетит какой-нить json, со структурой, отличной от всего что видели.

И вот он, потенциально пропущенный дефект

  • 0

  • Наверх


#6

Spock

Отправлено 28 января 2019 — 19:17

Не опасно ли так, не зная как реально возвращаются 500ые?  Подсунем стандартный ответ веб-сервера, а реально в ответ прилетит какой-нить json, со структурой, отличной от всего что видели.

И вот он, потенциально пропущенный дефект

почитайте выше, я написал что в тело подставляем «что угодно», например «123» — вот вам и «прилетает» структура которую мы не ожидаем

  • 0

  • Наверх


#7

baruk

baruk

    Новый участник

  • Members
  • Pip

  • 11 сообщений

Отправлено 28 января 2019 — 19:40

почитайте выше, я написал что в тело подставляем «что угодно», например «123» — вот вам и «прилетает» структура которую мы не ожидаем

Именно. А зачем нам такая структура? Ну начнут разрабы ловить ошибки при попадании «чего угодно», а прилетит реальная 500 и тут все упадет.

Я к тому, что при подмене данных нужно использовать правильную структуру ответа, иначе, как мне кажется, бессмысленно.

  • 0

  • Наверх


#8

Spock

Отправлено 28 января 2019 — 19:59

Именно. А зачем нам такая структура? Ну начнут разрабы ловить ошибки при попадании «чего угодно», а прилетит реальная 500 и тут все упадет.

Я к тому, что при подмене данных нужно использовать правильную структуру ответа, иначе, как мне кажется, бессмысленно.

смотрите как подменять надо чтобы «все ловилось»:

кейс 1: подмена ответа на «ожидаемую» ошибку

подменяем хттп-код на например 403 либо что у вас там считается ошибкой, тело ответа подменяем на ошибку в вашем формате, например джейсон, с текстом например «баланс ниже нуля». смотрим система распарсила ошибку и отобразила в интерфейсе текст «баланс ниже нуля»

кейс 2: подмена ответа на «неожидаемую» ошибку

подменяем хтпп-код на например 500 и тело на что-то не по вашей структуре например «123». Смотрим что обработчик отобразил какую-то общую ошибку типа «Something went wrong»

  • 0

  • Наверх


#9

baruk

baruk

    Новый участник

  • Members
  • Pip

  • 11 сообщений

Отправлено 28 января 2019 — 20:13

В таком виде согласен с вами.

  • 0

  • Наверх


#10

77juli77

77juli77

    Новый участник

  • Members
  • Pip

  • 1 сообщений

Отправлено 21 мая 2021 — 15:20

Здравствуйте — можно но ли получить ошибку 500 или другую ошибку ( симитировать) — банк требует скриншот, а я его не сделала — не могла зайти вовремя списали 60 000 которые копились год. Буду признательна и готова заплатить если можно что то сделать — спасибо

  • 0

  • Наверх


#11

Snap

Snap

  • ФИО:Роман
  • Город:Москва

Отправлено 30 августа 2021 — 08:04

Здравствуйте — можно но ли получить ошибку 500 или другую ошибку ( симитировать) — банк требует скриншот, а я его не сделала — не могла зайти вовремя списали 60 000 которые копились год. Буду признательна и готова заплатить если можно что то сделать — спасибо

Нет. Если банк честный и у них есть лог ошибок (например, на моем проекте есть), то если вы назовете им свой IP (правда IP у вас уже мог измениться) и точное время, они смогут посмотреть, была ли ошибка.

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

  • 0

  • Наверх


В статье мы расскажем, как исправить ошибку (код состояния) 500 со стороны пользователя и администратора сайта, а также подробно разберём, что такое ошибка запроса 500.

Что такое внутренняя ошибка сервера 500

Код ошибки 5хх говорит о том, что браузер отправил запрос корректно, но сервер не смог его обработать. Что значит ошибка 500? Это проблема сервера, причину которой он не может распознать.

Сообщение об ошибке сопровождается описанием. Самые популярные варианты:

  • Внутренняя ошибка сервера 500,
  • Ошибка 500 Internal Server Error,
  • Временная ошибка (500),
  • Внутренняя ошибка сервера,
  • 500 ошибка сервера,
  • Внутренняя ошибка HTTP 500,
  • Произошла непредвиденная ошибка,
  • Ошибка 500,
  • HTTP status 500 internal server error (перевод ― HTTP статус 500 внутренняя ошибка сервера).

Дизайн и описание ошибки 500 может быть любым, так как каждый владелец сайта может создать свою версию страницы. Например, так выглядит страница с ошибкой на REG.RU:

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

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

Когда поисковый робот сканирует страницу с ошибкой 500, он не изменяет её статус в течение суток. В течение этого времени администратор может исправить ошибку. Если робот перейдёт на страницу и снова столкнётся с ошибкой, он исключит эту страницу из поисковой выдачи.

Проверить, осталась ли страница на прежних позициях, можно с помощью Google Search Console. Если робот исключил страницу из поисковой выдачи, её можно добавить снова.

Код ошибки 500: причины

Если сервер вернул ошибку 500, это могло случиться из-за настроек на web-хостинге или проблем с кодом сайта. Самые распространённые причины:

  • ошибки в файле .htaccess,
  • неподходящая версия PHP,
  • некорректные права на файлы и каталоги,
  • большое количество запущенных процессов,
  • большие скрипты,
  • несовместимые или устаревшие плагины.

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

Что делать, если вы пользователь

Если на определённом ресурсе часто возникает ошибка 500, вы можете связаться с владельцем сайта по инструкции.

Перезагрузите страницу

Удаленный сервер возвращает ошибку не только из-за серьёзных проблем на сервере. Иногда 500 ошибка сервера может быть вызвана небольшими перегрузками сайта.

Чтобы устранить ошибку, перезагрузите страницу с помощью сочетания клавиш:

  • на ПК — F5,
  • на ноутбуке — Fn + F5,
  • на устройствах от Apple — Cmd + R.

Обратите внимание! Если вы приобретаете товары в интернет-магазине и при оформлении заказа появляется 500 Internal Server Error (перевод — внутренняя ошибка сервера), при перезагрузке страницы может создаться несколько заказов. Поэтому сначала проверьте, оформился ли ваш предыдущий заказ. Если нет, попробуйте оформить заказ заново.

Очистите кэш и cookies браузера

Кэш и cookies сохраняют данные посещаемых сайтов и данные аутентификаций, чтобы в будущем загружать веб-ресурсы быстрее. Если на ресурсе уже был статус ошибки 500, при повторном входе на сайт может загружаться старая версия страницы с ошибкой из кэша, хотя на самом деле страница уже работает. Очистить кэш и куки браузера вам поможет инструкция.

Если ни одно из этих действий не решило проблему, значит, некорректно работает сам сервер сайта. Вернитесь на страницу позже, как только владелец решит проблему.

Что делать, если вы владелец сайта

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

Ниже рассмотрим самые популярные причины и способы решения.

Ошибки в файле .htaccess

Неверные правила в файле .htaccess — частая причина возникновения ошибки. Чтобы это проверить, найдите .htaccess в файлах сайта и переименуйте его (например, в test). Так директивы, прописанные в файле, не повлияют на работу сервера. Если сайт заработал, переименуйте файл обратно в .htaccess и найдите ошибку в директивах. Если вы самостоятельно вносили изменения в .htaccess, закомментируйте новые строки и проверьте доступность сайта.Также может помочь замена текущего файла .htaccess на стандартный в зависимости от CMS.

Найти директиву с ошибкой можно с помощью онлайн-тестировщика. Введите содержимое .htaccess и ссылку на сайт, начиная с https://. Затем нажмите Test:


Произошла непредвиденная ошибка

На экране появится отчёт. Если в .htaccess есть ошибки, они будут выделены красным цветом:


500 ошибка nginx

Активирована устаревшая версия PHP

Устаревшие версии PHP не получают обновления безопасности, работают медленнее и могут вызывать проблемы с плагинами и скриптами. Возможно, для работы вашего веб-ресурса нужна более новая версия PHP. Попробуйте сменить версию PHP на другую по инструкции.

Установлены некорректные права на файлы и каталоги сайта

В большинстве случаев корректными правами для каталогов являются «755», для файлов — «644». Проверьте, правильно ли они установлены, и при необходимости измените права на файлы и папки.

Запущено максимальное количество процессов

На тарифах виртуального хостинга REG.RU установлены ограничения на количество одновременно запущенных процессов. Например, на тарифах линейки «Эконом» установлено ограничение в 18 одновременно запущенных процессов, на тарифах «+Мощность» ― 48 процессов. Если лимит превышен, новый процесс не запускается и возникает системная ошибка 500.

Такое большое число одновременных процессов может складываться из CRON-заданий, частых подключений с помощью почтовых клиентов по протоколу IMAP, подключения по FTP или других процессов.

Чтобы проверить количество процессов, подключитесь по SSH. Выполните команду:

ps aux | grep [u]1234567 |wc -l

Вместо u1234567 укажите ваш логин хостинга: Как узнать логин хостинга.

Чтобы посмотреть, какие процессы запущены, введите команду:

Вместо u1234567 укажите логин услуги хостинга.

Командная строка отобразит запущенные процессы:


Код ошибки 500

Где:

  • u1234567 — логин услуги хостинга,
  • 40522 — PID процесса,
  • S — приоритет процесса,
  • /usr/libexec/sftp-server — название процесса.

Процесс можно завершить командой kill, например:

Вместо 40522 укажите PID процесса.

Чтобы решить проблему, вы также можете:

  • увеличить интервал запуска заданий CRON,
  • ограничить количество IMAP-соединений в настройках почтового клиента. Подробнее в статье Ограничение IMAP-соединений,
  • проанализировать запущенные процессы самостоятельно или обратившись за помощью к разработчикам сайта.

Если вам не удалось самостоятельно устранить ошибку 500, обратитесь в техподдержку.

Скрипты работают слишком медленно

На каждом виртуальном хостинге есть ограничения на время выполнения скрипта. Если за установленное время скрипт не успевает выполниться, возникает ошибка сервера 500. Для решения проблемы обратитесь к разработчику сайта и оптимизируйте скрипты. Если оптимизировать нельзя, перейдите на более мощный вид сервера.

У пользователей VPS есть возможность увеличить максимальное использование оперативной памяти на процесс, но лучше делать скрипты меньшего размера.

Ошибка 500 на сайте, созданном на WordPress

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

Для начала проверьте, нужно ли обновить плагины. Часто устаревшие плагины перестают работать и вызывают проблемы работы сайта. Если все плагины обновлены, но 500 Internal Server Error остаётся, отключите все плагины, чтобы убедиться, что именно они мешают работе сайта. Как только станет понятно, что виноват один из плагинов, отключайте их по очереди, пока не найдёте тот, который нарушает работу сервера.


Как отключить плагин в WordPress

  1. 1.

  2. 2.

    Перейдите во вкладку «Плагины» ― «Установленные».

  3. 3.

    Нажмите Деактивировать у плагина, который, как вам кажется, повлиял на работу сайта:

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

Содержание:

  • Что означает код ошибки 500 и почему она возникает?
  • Где можно встретить ошибку 500?
  • Все причины возникновения ошибки
  • Что делать при появлении ошибки? 

    • Подождать
    • Сообщить администратору
  • Что делать администратору при появлении ошибки? 

    • Проверить файл htaccess
    • Проверить лог ошибок
    • Проверить содержимое CGI-скриптов
    • Проверить плагины и компоненты
    • Увеличить объем оперативной памяти сервера

Что означает код ошибки 500 и почему она возникает?

Коды состояния HTTP сообщают браузеру интернет-пользователя (клиенту), успешно ли выполнен запрос (получение доступа к сайту). К примеру, если браузер получает код состояния 200, то все прошло успешно. Это сообщение не видно пользователю — вместо него появляется запрошенный контент.

С кодами состояния 400 и 500 дело обстоит иначе. Первый означает, что ошибка связана с клиентом, а второй — с сервером.

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

Где можно встретить ошибку 500?

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

Ошибка 500 может отображаться различными способами, но в большинстве случаев сообщение включает код состояния 500, фразу «внутренняя ошибка сервера» или и то, и другое. Вот несколько распространенных примеров:

  • 500 Internal Server Error;
  • HTTP 500 — Internal Server Error;
  • Temporary Error (500);
  • Internal Server Error;
  • HTTP 500 Internal Error;
  • 500 Error;
  • HTTP Error 500;
  • 500. That’s an error.

Обычно эта ошибка отображается в окне браузера, как стандартная веб-страница.

Все причины возникновения ошибки

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

Вот несколько типичных источников проблем.

  • Доступ запрещен — разрешения основных файлов и папок заданы неправильно.
  • Тайм-аут сеанса PHP — скрипт пытается получить доступ к внешнему ресурсу и сталкивается с задержкой.
  • Некорректный код в htaccess — структура htaccess, файла для локальной настройки сервера Apache, может быть неправильной.
  • Ошибка в синтаксисе и коде скриптов CGI и Perl — в этих скриптах могут встречаться неточности, в частности несогласованность путей.
  • Лимит памяти PHP — процесс превышает пределы памяти и поэтому не может быть выполнен правильно.

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

Если ошибка сохраняется в течение длительного времени, это может негативно повлиять на SEO сайта. К счастью, большинство из этих проблем можно исправить.

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

Если вы попытались открыть веб-страницу, но увидели Internal Server Error 500, можно сделать следующее.

Подождать

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

Также можно заглянуть на сайт downforeveryoneorjustme.com и вставить в поисковую строку URL-адрес страницы, на которой произошла внутренняя ошибка сервера.

Сервис сообщит, возникла ли проблема только у вас или же у всех пользователей.

Сообщить администратору

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

У большинства сайтов и сервисов есть аккаунты в социальных сетях, а на некоторых даже указаны email-адреса и номера телефона.

Что делать администратору при появлении ошибки?

Если ошибка 500 появилась на вашем сайте, попробуйте следующие способы.

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

Загляните в файл htaccess: даже небольшая синтаксическая ошибка может вызывать внутреннюю ошибку сервера. Не менее часто случается так, что этот файл неправильно отформатирован. Его нужно создавать в формате ASCII или ANSI, а не в Unicode. Следовательно, писать его следует в текстовом редакторе, например в Notepad, Notepad++ и Sublime Text, а не в Microsoft Word.

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

Проверить лог ошибок

Загляните в лог-файл, например для серверов Linux его можно найти по адресу /var/log/httpd/error_log. Попробуйте перезагрузить сайт, чтобы воспроизвести код ошибки 500, и посмотреть, как создается лог-файл. Это поможет быстро найти источник проблемы.

Проверить содержимое CGI-скриптов

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

  • read (r) — чтение;
  • write (w) — запись;
  • execute (x) — выполнение.

Эти разрешения можно предоставлять трем типам пользователей:

  • владельцу файла;
  • группе пользователей;
  • все остальным.

Права указываются либо с помощью сокращений r, w и x, либо с помощью числовых значений: 4 — для чтения, 2 — для записи и 1 — для выполнения. Они добавляются для каждого типа пользователей и идут один за другим: rwxr-xr-x (rwx — для владельца, r-x — для группы и r-x — для всех остальных) или 755.

По умолчанию должна быть установлена конфигурация 755. Если разрешения предоставляются иначе, может возникнуть ошибка. Эту настройку можно изменить с помощью команды: chmod 755 filename.

Если проблема не решится, можно также провести тестирование, предоставив все права для каждой группы: chmod 777 filename. Однако к этой настройке следует прибегать только для определения проблемы — если любой пользователь сможет переписывать файл, безопасность сайта окажется под угрозой.

Проверить плагины и компоненты

Новое ПО, надстройки и сторонние скрипты могут конфликтовать с текущей конфигурацией сервера. Чтобы выявить причину ошибки 500, попробуйте поочередно отключить или удалить программные дополнения.

И напротив, если вы недавно обновили ПО, текущие плагины и темы могут оказаться несовместимы с обновлением. Деактивация дополнений по порядку — лучший способ найти основную причину проблемы.

Увеличить объем оперативной памяти сервера

Лимит памяти определяет, какой ее объем может задействовать процесс. Если какой-либо процесс требует больше памяти, чем доступно, может возникать ошибка 500.

Чтобы это исправить, можно временно увеличить лимит памяти. Для этого добавьте в php.ini команду, подобную этой: memory_limit = 512M. Этот пример устанавливает лимит на 512 МБ.

Учитывайте, что хостинг-провайдер допускает лишь определенный лимит сеанса PHP в рамках используемого вами пакета. Если будет введено большее значение, сервер проигнорирует его. Также помните, что это лишь временное решение: как только сайт заработает, потребуется выяснить причину высокого потребления памяти. Высока вероятность, что в коде содержится ошибка.

Если ни один из этих способов не помог, стоит связаться с хостинг-провайдером. Но прежде чем сделать это, проверьте состояние серверов: при возникновении проблем многие провайдеры сообщают эту информацию на странице состояния или в социальных сетях.

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

Blog.hubspot.com 

Ionos.com

Businessinsider.com

Lifewire.com

Подписывайтесь на наш Telegram-канал, чтобы быть в курсе последних новостей и событий!

Инструкция для пользователей и владельцев ресурса.

Что такое ошибка 500 и как её исправить

Что означает код ошибки 500

Ошибка 500 (Internal Server Error) — это внутренняя проблема сервера. Она возникает, когда браузер или другой клиент отправляет серверу запрос, а тот не может его обработать.

Одна из самых частых причин появления ошибки 500 — это неправильный синтаксис файла .htaccess. Кроме того, она порой возникает после загрузки на сервер неверных CGI‑скриптов или установки некорректных прав доступа.

То есть в ошибке 500, как и в других ответах с кодом, который начинается на цифру 5, виноваты разработчики или администраторы сервера. Но никак не пользователи.

Что делать пользователю при ошибке 500

Если вы увидели ошибку 500 на чужом сайте, есть два варианта.

Подождать

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

Сообщить администратору ресурса

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

В таком случае вы можете помочь. Попробуйте найти контактную информацию и связаться с владельцем ресурса, чтобы сообщить о проблеме. Если на самом сайте из‑за ошибки 500 вы никаких полезных данных не видите, найдите сохранённую копию страницы в поисковиках или в архиве интернета.

Что при ошибке 500 пользователю делать бессмысленно

Пример ошибки 500. Сервис GetStatusCode создан специально для тестирования различных ответов

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

  • перезагружать компьютер;
  • менять браузер;
  • переустанавливать ПО;
  • перезагружать роутер.

Что делать администратору при ошибке 500

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

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

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

Если вы используете веб‑сервер Apache, то в корне вашего сайта или во вложенных папках, скорее всего, есть файл .htaccess. В нём хранятся серверные настройки.

В большинстве случаев ресурс будет работать и без этого файла. Попробуйте переименовать .htaccess, например, в .htaccess_, а затем снова зайти на главную страницу сайта.

Если ошибка 500 исчезла, значит, дело именно в .htaccess. Проверьте синтаксис этого файла — возможно, при редактировании вы где‑то вставили лишний символ или допустили опечатку. Если есть предыдущая версия настроек, верните её и посмотрите, появляется ли ошибка 500.

Иногда помогает закомментировать строку Options в .htaccess — вставить # в самом её начале. Если это не сработало, закомментируйте и другие строки, а затем последовательно убирайте #, чтобы найти проблемное место в файле.

Если вы отредактировали .htaccess, проверьте, сохранились ли изменения. Бывает, что хостер выставляет на этот файл права, которые запрещают редактирование. В таком случае попробуйте скачать .htaccess к себе на компьютер, изменить файл в любом текстовом редакторе и залить на сайт вместо старой версии.

Посмотреть лог ошибок

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

Хостеры обычно указывают, где по умолчанию хранятся логи и как получить к ним доступ из панели управления. Эти сведения можно найти в разделах помощи или FAQ (frequently asked questions — часто задаваемые вопросы) на сайте хостинга.

Выставить права для CGI‑скриптов

Если вы используете CGI‑скрипты, то сами файлы с ними и папки, в которых они лежат, должны иметь право доступа 0755 (drwxr‑xr‑x). Такая комбинация разрешает запись в них только для владельца. Остальные пользователи могут лишь читать эти файлы и запускать их.

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

Проверить содержимое CGI‑скриптов

Корректные CGI‑скрипты должны иметь окончания строк в формате Unix (n), а не в формате Windows (rn). Чтобы сохранить правильный вариант, загружать код на большинство хостингов нужно по FTP в режиме ASCII. Если вы не знаете, какие настройки использовали, перезалейте скрипты и посмотрите, не исчезла ли ошибка 500.

Также CGI‑программы могут формировать неправильные HTTP‑заголовки ответа. В этом случае вы, скорее всего, увидите ошибки в логах.

Удалить или отключить недавно установленные плагины или компоненты

Бывает, что отдельные компоненты сайта или плагины конфликтуют между собой. Это также приводит к ошибке 500 и другим проблемам на стороне сервера.

Если вы недавно устанавливали модули либо обновляли их, попробуйте отключить эти элементы в панели администрирования. Возможно, после этого на сайте возникнут другие ошибки. Но если ответ 500 больше не приходит, дело как раз в конфликте компонентов или плагинов.

Оптимизировать скрипты

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

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

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

Увеличить объём оперативной памяти сервера

Бывает, что даже после оптимизации скриптов они всё равно потребляют слишком много памяти. В этом случае придётся перейти на более дорогой пакет обслуживания на хостинге или, если предоставляется такая возможность, увеличить непосредственно выделение памяти. И не переплачивать за другие ресурсы, которые вам не нужны.

Попросить помощи

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

Правда, порой ответов приходится ждать долго. Поэтому имеет смысл зайти в похожие темы и попросить помощи там.

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

Читайте также 💿⚙️💻

  • Что делать, если тормозит браузер
  • Как исправить ошибку CPU Fan Error при загрузке компьютера
  • Что делать, если DNS-сервер не отвечает
  • Что означает 404 Not Found и другие ошибки веб-страниц
  • Что делать, если пропал интернет на Windows

Понравилась статья? Поделить с друзьями:
  • Как получить имя ошибки python
  • Как получить error knife kat
  • Как получить 404 ошибку
  • Как получить 401 ошибку
  • Как получателю вернуть ошибочно перечисленные средства