Если сайт внезапно перестал работать, диагностировать и устранить проблему поможет этот небольшой чек-лист.
Вначале рассмотрим основные проблемы на стороне сервера.
Место на диске
Это одна из самых популярных причин в остановке сервисов. Место может заполнится логами, бэкапами, если они сохраняются локально, кэшем сайта.
Если есть доступ к серверу по SSH, то достаточно запустить команды:
df -i df -h
Они покажут, сколько места занято на диске в процентах. Если занято 100%, то службы сервера, например, mysql
, не смогут создавать временные файлы и сайты перестанут работать. В этом случае необходимо освободить место на диске, либо увеличить его. Более подробно в этой статье:
Что делать, когда осталось мало места на диске
Доступность служб
Как правило, для работы сайтов необходимо, чтобы был запущен веб-сервер и сервер БД mysql
. Проверить статус служб можно через отдельный пункт ISPmanager:
Если с какой-то из служб возникла проблема, то «лампочка» не включится, и тогда необходимо будет разбираться с этой службой отдельно. Так же, в большинстве случаев, об этом скажет главная страница сайта: либо отображается код ошибки, например, 500
, 502
, 504
, либо непосредственно сам текст с отладочной информацией, если это позволяют настройки CMS, движка, на котором написан сайт.
Мы рассмотрели настройки со стороны сервера — если всё корректно по диагностике из предыдущих пунктов, но сайт по-прежнему не работает, то необходимо сужать круг поиска возможных причин ошибок и провести диагностику сайта.
Рассмотрим вариант дальнейших действий, если на сервере установлена панель управления ISPmanager.
Просмотр логов
Первым делом следует проверить:
- не вносились ли изменения в код сайта,
- не обновлялась ли CMS и плагины,
- не была ли изменена версия PHP,
- имеются ли резервные копии, на случай, если сайт не получится «реанимировать».
В последующей диагностике нам помогут логи. Если вы используете панель ISPmanager, то первым делом необходимо убедиться, включен ли лог ошибок.
Сайты
— нужный домен — изменить:
Выводимые сайтом ошибки можно посмотреть по пути
/var/www/http-logs/имя-сайта.error.log
например, запустив команду tail
, подключившись к серверу по SSH:
Необходимо убедиться, что нужные параметры PHP для выявления ошибки, такие как:
error_reporting display_errors display_startup_errors log_errors
включены.
Проверить это можно в том же ISPmanager во вкладке:
Настройки
— Настройки PHP
— Расширенные настройки
, выделив нужную версию.
Либо можно добавить их непосредственно в код сайта — в главную (индексную) страницу index.php
:
ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);
Либо прописать в файл .htaccess
в корне сайта:
php_flag display_startup_errors on php_flag display_errors on
Тем самым, мы включили возможность вывода ошибок и логирование со стороны PHP и в большинстве случаев сообщений в логе будет достаточно, чтобы понять, в какую сторону «копать». Но бывает, что и этого мало, тогда необходимо идти дальше и включать вывод диагностической информации уже непосредственно внутри самого сайта, средствами его движка.
Включение вывода ошибок и debug
Большинство CMS поддерживают вывод отладочной информации на экран, что поможет в диагностике ошибок.
Например, если WordPress не может соединиться с базой данных, он выведет такое сообщение:
Если же при этом в конфигурационном файле wp-config.php
, который находится в корне сайта, включить дебаг — поменять директивы:
define('WP_DEBUG', false); define('WP_DEBUG', true);
то выводимая информация будет полнее:
И в этом примере выводимый текст достаточно ясно даёт понять, что указан неправильный пароль пользователя базы данных.
Подобный способ отладки применим для большинства CMS: дебаг можно включить в configuration.php
у Joomla, .settings.php
(скрытый файл с точкой перед названием) у Битрикс и так далее. Узнать, как это сделать, может помочь документация используемого движка.
Увы, в одной статье не охватить все возможные проблемы, влияющие на доступность сайта. Поэтому мы рассмотрим только самые распространенные случаи, с которыми чаще всего приходится иметь дело техподдержке.
Совместимость версий PHP
Одна из частых проблем — сайт работает на одной версии PHP, а на сервере используется другая. Несовместимость версий приводит к некорректной работе сайта. Если дело в этом, вы увидите синтаксические ошибки вида:
Parse error: syntax error, unexpected T_STRING
Либо явное сообщение, как например это делает WordPress:
Другая распространенная ошибка:
Extension ‘mysql’ is deprecated since PHP 5.5 and removed since PHP 7.0; Use mysqli instead
Говорит о том, что вы пытаетесь запустить сайт на версии 7.0 и выше, когда он работает с более ранними версиями PHP и использует устаревшее расширение php-mysql
, когда как в новых версиях используется только php-mysqli
.
Отсутствие расширений PHP
Также могут отсутствовать необходимые для работы сайта расширения PHP. Пример текста ошибки:
Ioncube Loader is NOT installed at your server to run this application
или
Uncaught Error: Call to undefined function curl_init()
Это говорит об отсутствующих или выключенных расширениях PHP Ioncube
или Curl
соответственно.
Проверить их наличие можно через меню ISPmanager:
Настройки
— Настройки PHP
— Управление расширениями
Посмотреть текущую версию PHP можно через меню Сайты
в строке с нужным сайтом:
Либо подложить файл info.php
c содержимым в корень сайта:
<?php phpinfo(); ?>
затем перейти по адресу в браузере http://вашсайт.рф/phpinfo.php
— в верхней части страницы увидете, какая версия используется сайтом:
После работ важно удалить этот файл, так как этой информацией могут воспользоваться злоумышленники.
Лимиты PHP
Другой «пласт» возможных ошибок — недостаточные лимиты, выставленные в настройках PHP. Это может проявляться как на главной странице, так и на других, где например, работает «тяжелый» скрипт, требующий больше времени и ресурсов, чем ему дозволено сейчас.
Об этом скажут сообщения:
PHP Fatal error: Allowed memory size of 8388608 bytes exhausted
В этом случае необходимо увеличить параметр на лимит используемой ОЗУ для одного скрипта memory_limit
.
The process *** exceeded the timeout of 60 seconds или PHP EXECUTION TIMEOUT ERROR
Увеличиваем время ( в секундах), поменяв параметры set_time_limit
и max_execution_time
.
The uploaded file exceeds the upload_max_filesize directive in php.ini
Правим директивы на размер загружаемых файлов в мегабайтах: upload_max_filesize
и post_max_size
.
Используем strace
Если способы, перечисленные выше, не помогли, можно попробовать использовать утилиту strace
. Но будьте готовы к тому, что вам потребуется подключаться к серверу по SSH и потратить значительное время на поиск ошибок в логах — вывод этой команды не очень удобен для восприятия.
Утилита предназначена для вывода на экран или в отдельный файл системных вызовов. Грубо говоря, показывает последовательность обращений скриптов сайта друг к другу. Это помогает отловить ошибку, если выводимого дебага недостаточно или не помогает решить проблему.
Устанавливается она yum install strace
на серверах Centos или apt install strace
для Debian/Ubuntu.
В общем виде подойдет такой синтаксис:
strace -s999 -o /tmp/strace.txt /opt/php71/php index.php
Где:
strace -s999
— вызов командыstrace
с максимально подробным выводом и запись его в файл/tmp/strace.txt
/opt/php71/php
— адрес интерпретатора PHPindex.php
— путь к вызываемому файлу.
По истории вызовов можно будет понять, к каким файлам идёт обращение и в какой момент возникает ошибка.
Заключение
В этой статье мы рассмотрели вероятные причины, почему может не работать сайт: из-за проблем «внутри» сервера — закончившихся ресурсов или неработающих служб. Разобрались, как включать логи, настраивать PHP и включать дебаг для выявления ошибок.
Если ничего не помогло, то рекомендуем не мучаться и не заниматься «самолечением» — обратитесь в техническую поддержку хостинга или к разработчику. Как правило, так получится решить проблему гораздо быстрее и без фатальных последствий.
Как правильно написать запрос в службу технической поддержки
Может сейчас эта тема не особо вас волнует, однако протяжении существования вашего сайта вы будете сталкиваться с кодами ответов сервера или «списком кодов состояния HTTP», связанных с различными элементами функциональной составляющей вашего сайта. Довольно часто встречаются такие ошибки, как 404 и 301, но существует огромное множество других ошибок, с которыми вы, возможно, не знакомы. Прежде чем паниковать, лучше прочтите эту статью, призванную рассказать вам о значения кодов различных ошибок, которые могут встретиться на вашем пути.
Некоторые из них напрямую связаны с сервером или с клиентской стороной, а некоторые уже не актуальны, поэтому вы вряд ли их увидите в реальной жизни, но ради интереса и фоновых знаний я включил и их.
Ниже представлена удобная таблица, при помощи которой вы сможете быстро и просто перейти к интересующей вас ошибке, и узнать ее значение:
100 | 301 | 405 | 417 | 450 |
101 | 302 | 406 | 418 | 451 |
102 | 303 | 407 | 422 | 500 |
200 | 304 | 408 | 423 | 501 |
201 | 305 | 409 | 424 | 502 |
202 | 306 | 410 | 425 | 503 |
203 | 307 | 411 | 426 | 504 |
204 | 400 | 412 | 428 | 505 |
205 | 401 | 413 | 429 | 506 |
206 | 402 | 414 | 431 | 507 |
207 | 403 | 415 | 444 | 509 |
300 | 404 | 416 | 449 | 510 |
1xx Информационные коды
- 100 Continue Server Code
100 Continue означает «работу в штатном режиме». Он означает, что пользователем был сделан хороший запрос, и сервер принялся к обработке. Это временный код ответа, имеющий место лишь тогда, когда пользователь ожидает финального ответа от сервера, который происходит только после того, как будет отослан последний пакет данных.
Когда этот код может использоваться? Это внутренний код, и иногда он даже не генерируется, если пользователь уже получил какие-то данные от сервера. Это нечто вроде послания к серверу о том, что соединение было установлено успешно, и двери открыты. Высылай данные, но не забудь закрыть дверь, когда закончишь дела (имеется в виду код финального ответа).
Вернуться в начало
- 101 Switching Protocols
Это, наверное, один из самых простых серверных кодов, который означает, что пользователь сделал запрос на переключение типа протокола, используемого на веб-сервере, и сервер дал согласие на это.
Когда этот код может использоваться? При переключении на новую версию HTTP с протокола старого типа. Этот запрос выполняется только при наличии более подходящего протокола (иными словами, при наличии более свежей версии HTTP).
Вернуться в начало
- 102 Processing
Так как WebDAV-запрос (протокол передачи) может содержать не только один запрос, но также множество подзапросов, включая операции с файлами, он зачастую может затребовать более длительного времени для завершения запроса.
Когда этот код может использоваться? Этот код генерируется для того, чтобы оповестить пользователя и необходимости сбросить таймер и ожидать следующей команды в обычном режиме, так как процесс обработки запроса может занять длительное время.
Вернуться в начало
2xx Success
Сообщения данного класса информируют о случаях успешного принятия и обработки запроса клиента. В зависимости от статуса сервер может ещё передать заголовки и тело сообщения. Иначе говоря, данная классификация кодов обозначает, что действие, запрошенное клиентом, было успешно принято в обработку.
- 200 OK
Этот код, вероятно, является самым популярным, но при этом самым незаметным ввиду его характера. Он означает, что обмен между пользователем и сервером завершен, и все прошло так, как должно было.
- 201 Created
В результате успешного выполнения запроса был создан новый ресурс. Например, запрос пользователя привел к созданию нового ресурса вроде новой страницы. Сервер-источник должен создать ресурс перед тем, как отправлять код 201. Если ресурс не может быть создан в данный момент, то сервер вместо этого должен отобразить код 202 (accepted).
Вернуться в начало
- 202 Accepted
Запрос был принят на обработку, но она не завершена по каким-либо причинам. Запрос может и не быть выполнен до конца, в зависимости от того, был ли он отклонен в процессе обработки.
Когда этот код может использоваться? Когда сервер не может выполнить запрос в тот момент, в который он был сделан. Запрос изначально не рассчитан на обязательное исполнение, и клиенту не обязательно дожидаться окончательной передачи сообщения, так как может быть начат очень долгий процесс.
Вернуться в начало
- 203 Non-Authoritative Information
Сервер успешно обработал запрос, но передаваемая информация была взята не из первичного источника (резервной копии, другого сервера и т. д.) и поэтому может быть неактуальной. По сути, этот код очень похож на 200, но указывает на то, что информация была получена не из первоисточника.
Когда этот код может использоваться? Этот код может быть использован вместо 200, когда у отправителя есть причина полагать, что заголовки ответа от постороннего источника могут отличаться от того, что предоставил бы исходный сервер.
Вернуться в начало
- 204 No Content
Этот код представляет собой ответ, посланный сервером для того, чтобы сообщить, что запрос был получен и понят, но отсутствуют данные, которые можно было отправить пользователю. Это, главным образом, используется для того, чтобы разрешить запуск скриптов, не меняя при этом документ. Данный код не должен содержать тело сообщения, и включается в первую пустую строку кода сразу после заголовка.
Когда этот код может использоваться? Этот код, главным образом, используется для того, чтобы позволить осуществить ввод или какие-либо действия без необходимости обновлять документ (страницу).
Вернуться в начало
- 205 Reset Content
Сервер успешно обработал запрос, но при этом не возвращает какой-либо контент. В отличие от 204, этот ответ требует от запрашиваемого обновить документ.
Когда этот код может использоваться? Обычно он используется тогда, когда пользователь заполняет форму, а сервер посылает браузеры запрос на очистку формы. Он схож с кодом 204, но просит пользователя сбросить документ после завершения – например, очистить HTML-форму после подтверждения.
Вернуться в начало
- 206 Partial Reset
Сервер возвращает лишь часть контента, соответствующего заголовку, посланному клиентом. Обычно он используется расширенными инструментами кэширования, когда пользователь запрашивает лишь небольшую часть контента на странице, и сервер в своем ответе предоставляет данные лишь для этой области на странице.
Когда этот код может использоваться? Этот кода обычно используется вследствие запрос If-Range, который применяется в мощных валидаторах кэша. Запрос также должен включать заголовки области, которые используется в качестве параметров диапазона возвратной информации.
Вернуться в начало
- 207 Multi-Status
Сервер передаёт результаты выполнения сразу нескольких независимых операций, которые помещают в тело сообщения в виде XML-документа.
Вернуться в начало
3хх Перенаправление
Этот класс кодов состояния указывает на дальнейшие действия, которые должны быть предприняты агентом пользователя для того, чтобы завершить запрос. Действия могут производиться пользователей, либо могут включать в себя различные запросы к серверу.
- 300 Multiple Choices
В основном, этот код сообщает пользователю о том, что ресурс был перемещен, и сервер отвечает списком доступных альтернативных вариантов, среди которых пользователь может выбрать наиболее подходящий ему ресурс.
Когда этот код может использоваться? Обычно этот код можно увидеть, когда сервер считает, что предоставленный пользователем (другими словами, браузером пользователя) URL имеет недостаточно точный указатель, и предлагает дальнейший выбор. Обычно это происходит тогда, когда пользователь использует URL на директорию не самого последнего уровня, и сервер предлагает ему выбор имеющихся файлов или директорий последующего уровня.
Вернуться в начало
- 301 Moved Permanently
Это довольно распространенный пользовательский запрос. Он означает, что запросы для данного ресурса (а также все последующие запросы) должны быть перенаправлены на заданный URL.
Когда этот код может использоваться? Когда страница более не существует, либо ссылка, ведущая на сторонний источник, уже не работает. 301 редирект сообщает пользователю о том, что запрашиваемый ресурс был перемещен (обычно это реализуется при помощи файла .htaccess, доступного на серверах Apache).
Вернуться в начало
- 302 Found
Этот код сообщает пользователю, что расположение запрашиваемого ресурса временно изменено, и 302 код состояния должен содержать информацию о новом месторасположении, которое пользователь и должен запросить.
Когда этот код может использоваться? У этого кода есть несколько применений, многие из которых не являются тем, для чего код был изначально предназначен. Изначально он представлял собой основной способ создания временного перенаправления. Тем не менее, сегодня существуют и другие – этичные, и неэтичные – способы его применения.
Вернуться в начало
- 303 See Other
Этот код указывает пользователю на то, что запрашиваемый ресурс можно найти по URL, который отличается от указанного в запросе. Это не обязательно означает, что что-то было перемещено, это код лишь предоставляет адрес, по которому следует запрашивать подобный ответ.
Когда этот код может использоваться? Этот метод главным образом существует для того, чтобы позволить выводу данных POST-активированного скрипта перенаправить агента пользователя к выбранному ресурсу.
Вернуться в начало
- 304 Not Modified
Этот код означает, что пользователь запрашивает документ/ресурс только в том случае, если он подвергался изменениям с момента последнего обновления кэша данного документа.
Когда этот код может использоваться? Если в ответе от сервера сообщается о том, что параметры документа If-Modified-Since или If-Match не менялись с момента создания последнего кэша, то нет необходимости в повторной отправке ресурса.
Вернуться в начало
- 305 Use Proxy
Этот код сообщает пользователю, что доступ к запрашиваемому ресурсу возможен только посредством прокси, указанного в ответе.
Когда этот код может использоваться? Этот код часто отображается в связи с мерами безопасности, и предоставляет доступ к запрашиваемым URL-ресурсам.
Вернуться в начало
- 306 Switch Proxy
Этот код изначально означал «последующие запросы должны использовать указанный прокси», но в данный момент не используется и зарезервирован.
Вернуться в начало
- 307 Temporary Redirect
Этот код возвращается, если ресурс на данный момент временно доступен по другому URL, который также предоставляется в ответе. Этот код немного отличается от кода 302 – он представляет собой более определенную версию кода 302.
Когда этот код может использоваться? Он используется практически в тех же случаях, что и 302, но пользователь должен продолжить запросы по исходному URL при следующих запросах, либо до тех пор, пока не будет применен новых код ответа.
Вернуться в начало
4хх Ошибка клиента
Класс кодов 4xx предназначен для указания ошибок со стороны клиента, либо на то, что локации никогда (или уже) не существовало. Эти коды состояния применимы к любому методу запроса.
- 400 Bad Request
Запрос не может быть исполнен ввиду синтаксической ошибки.
Когда этот код может использоваться? Когда пользователь запрашивает информацию, но делает это, пренебрегая правилами протокола передачи гипертекста. Запрос не следует повторять без изменения синтаксиса.
Вернуться в начало
- 401 Unauthorized
Этот код связан с запросом к ресурсу, который требует авторизации. Ответ 401 указывает на то, что попытка авторизации была отклонена по тем данным, которые предоставил пользователь.
Когда этот код может использоваться? Когда пользователь совершает запрос к серверу, используя неправильные данные авторизации (имя пользователя и/или пароль).
Вернуться в начало
- 402 Payment Required
Зарезервирован на будущее. Тем не менее, исходное предназначение заключалось в том, что данный код мог использоваться в некоторой форме электронных денег для проведения трансакций, но этого не случилось, и коду не нашлось применения.
Когда этот код может использоваться? Старый сервис MobileMe от Apple выдавал ошибку 402, если аккаунт пользователя в MobileMe подозревался в злоупотреблении сервисом. Кроме того, Youtube использует это состояние, если конкретный IP-адрес уличен в совершении чрезмерного числа запросов, и тогда пользователю необходимо ввести CAPTHA.
Вернуться в начало
- 403 Forbidden
Пользователь пытается осуществить доступ к ресурсу, к которому у него нет доступа, и авторизация не изменит положения.
Когда этот код может использоваться? Когда сервер понял запрос, но он отказывается его выполнять из-за ограничений в доступе для клиента к указанному ресурсу. Обычно такое случается, когда ресурс не предназначен для публичного доступа.
Вернуться в начало
- 404 Not Found
Все знакомы с этим кодом, не так ли? Он означает, что запрошенный ресурс не может быть найден, но в будущем – когда он, возможно, там появится, – к нему можно будет осуществить доступ. Также здесь допустимы последующие запросы от клиента. Тем не менее, в большинстве таких случаев применяется код перенаправления из семейства 3хх, и пользователя перенаправляют на альтернативный ресурс или локацию.
Когда этот код может использоваться? Довольно часто, особенно если страницу переместили или удалили. Зачастую в подобных случаях сервер автоматически генерирует направляющую страницу с ошибкой 404.
Вернуться в начало
- 405 Method Not Allowed
Метод, при помощи которого совершается запрос к ресурсу, не доступен. Другими словами, ошибка возникает при попытке использовать GET на форме, которая требует ввод данных посредством POST, либо использовании метода PUT на ресурсе, который предназначен только для чтения.
Когда этот код может использоваться? Ошибки 405 встречаются в связи с конкретными объектами на веб-странице, для которых был совершен запрос. Например, когда строка запроса в скрипте отличается от пользовательского запроса, в котором подразумевается использование этого скрипта.
Вернуться в начало
- 406 Not Acceptable
Запрошенный ресурс способен генерировать только тот контент, который не применим к Accept-заголовкам в самом запросе. Браузер способен указывать серверу характеристики данных, которые данные будут принимать от сервера
Когда этот код может использоваться? Если форма файла запрошенного ресурса не совпадает с форматом, который пользователь способен распознать. Мы говорим сейчас о языке программирования, а не о французском!
Вернуться в начало
- 407 Proxy Authentication Required
Как и код состояния 401, код 407 означает, что клиент сначала должен авторизоваться через прокси. Чтобы сделать это и авторизоваться, прокси должен вернуть поле с заголовком proxy-authenticate, который отвечает требованиям, представленным сервером.
Когда этот код может использоваться? Когда сервер думает, что запрос данных от клиента корректным, но доступ к ресурсу возможен только посредством авторизации через прокси-сервер.
Вернуться в начало
- 408 Request Timeout
Время ожидания сервером передачи от клиента истекло.
Когда этот код может использоваться? Руководствуясь спецификацией W3 HTTP: «Клиент не сделал запрос в отведенный промежуток времени, который сервер был готов ждать. Клиент МОЖЕТ повторить запрос когда угодно».
Вернуться в начало
- 409 Conflict
Указывает на то, что запрос не может быть выполнен из-за конфликтного обращения к ресурсу.
Когда этот код может использоваться? Вы можете получить такой код при загрузке файла на веб-сервер, где уже имеется более свежая версия этого файла, что приводит к конфликту в системе контроля версий.
Вернуться в начало
- 410 Gone
Такой ответ сервер посылает, если ресурс раньше был по указанному URL, но был удалён и теперь недоступен. Пользователю не следует повторять идентичный запрос.
Когда этот код может использоваться? Если более невозможно осуществить доступ к ресурсу посредством данного запроса, и сервер не владеет информацией о возможном месте расположения ресурса. Если у сервера есть подозрение, что документ в ближайшее время может быть восстановлен, то лучше клиенту передать код 404.
Вернуться в начало
- 411 Length Required
Запрос не указывает длину контента, и это было затребовано в совершенном запросе.
Когда этот код может использоваться? Когда браузер не определяет длину запрашиваемого контента в заголовке запроса. Сервер не примет запрос без валидного поля заголовка content-length.
Вернуться в начало
- 412 Precondition Failed
Сервер не отвечает одному из предварительных условий, которые отправитель указал в запросе. Другими словами, один или более заголовок запроса был возвращен с атрибутом false.
Когда этот код может использоваться? Если заголовок запроса, который совершает валидный запрос к ресурсу, сообщает, что этот конкретный запрос не применим к этому конкретному ресурсу.
Вернуться в начало
- 413 Request Entity Too Large
Код 413 отображается в тех случаях, когда сервер отказывается обработать запрос по причине слишком большого размера тела запроса.
Когда этот код может использоваться? При использовании в форме метода POST с контентом, по размеру большим, нежели сервер способен обработать.
Вернуться в начало
- 414 Request-URL Too Long
Этот код отображается, когда сервер не может обработать запрос из-за слишком длинного указанного URL.
Когда этот код может использоваться? Когда POST-запрос конвертируется в GET-запрос. POST-запрос поддерживает отправку безграничного объема данных, связывая их с самим запросом. Тем не менее, если запрос должен быть конвертирован в GET-запрос, то запрос позволяет привязать данные формы к URL, что позволяет проводить информацию в больших размерах, чем это было доступно.
Вернуться в начало
- 415 Unsupported Media-Type
Ответ 415 отправляется для указания о том, что сервер заметил, что часть запроса была сделана в неподдерживаемом формате.
Когда этот код может использоваться? Когда в запросе не указываются какие-либо типы медиа, которые поддерживаются ресурсом или сервером. Например, пользователь запрашивает изображение с расширением файла, которое не поддерживается сервером. Сервер знает о том, что было запрошено, но не понимает формат, в котором был запрошен ресурс.
Вернуться в начало
- 416 Requested Range Not Satisfiable
Этот ответ приходит пользователю, когда тот запрашивает часть запрашиваемого ресурса, когда эта часть не может быть предоставлена.
Когда этот код может использоваться? Когда у сервера запрашивают XXX-YYY байтов какого-либо ресурса, но ресурс имеет меньший размер, чем указано в запросе.
Вернуться в начало
- 417 Expectation Failed
Этот ответ может быть получен, когда по каким-то причинам сервер не может удовлетворить значению поля Expect заголовка запроса.
Когда этот код может использоваться? Все вполне и так понятно. Когда один из заголовков запроса, заголовок «Expect», имеет запрос, на который сервер не может предоставить ответ.
Вернуться в начало
- 418 I’m a teapot
Этот код был создан в 1998 году как одна из традиционных первоапрельских шуток IETF, в RFC 2324, Hyper Text Coffee Pot Control Protocol, и вряд ли будет обрабатываться современными HTTP-серверами.
- 422 Unprocessable Entity
Запрос был принят и понят, но не может быть выполнен ввиду наличия семантических ошибок.
Когда этот код может использоваться? Когда сервер успешно принял запрос, может работать с указанным видом данных, в теле запроса XML-документ имеет верный синтаксис, но имеется какая-то логическая ошибка, из-за которой невозможно произвести операцию над ресурсом.
Вернуться в начало
- 423 Locked
Целевой ресурс из запроса заблокирован от применения к нему указанного метода. Чтобы ресурс стал доступным, необходимо снять блокировку или предоставить правильные данные авторизации.
Когда этот код может использоваться? Когда ресурс… закрыт. Обычно это случается из соображений безопасности.
Вернуться в начало
- 424 Failed Dependency
Указывает на то, что реализация текущего запроса может зависеть от успешности выполнения другой операции, и если она не будет успешно проведена, вся обработка запроса будет прервана.
Вернуться в начало
- 425 Unordered Collection
Этот код отображается, когда ресурс определен в черновиках «WebDAV Advanced Collections Protocol», но не присутствует в «Web Distributed Authoring and Versioning Ordered Collections Protocol».
Вернуться в начало
- 426 Upgrade Required
Этот код отображается, когда сервер указывает клиенту на необходимость обновить (переключиться на другой, более новый) протокол. Когда этот код может использоваться? Обычно когда браузер использует устаревшие протоколы.
Вернуться в начало
- 428 Precondition Required
Сервер-источник требует, чтобы в запросе были указаны предварительные условия. Этот код предназначен для того, чтобы избежать конфликта версий ресурса в тех случаях, когда клиент получает (GET) состояние ресурса, изменяет его, и отправляет (PUT) обратно на сервер, и в то же время какая-то третья сторона также изменяет положение ресурса прямо на севере, что приводит к конфликту.
Когда этот код может использоваться? Запрашивая указание условий, сервер как бы гарантирует клиентам то, что они используют корректные актуальные копии ресурс. Если же это не соответствует действительно, пользователь получит ошибку 428.
Вернуться в начало
- 429 Too Many Requests
Этот ответ посылается, если клиент попытался отправить слишком много запросов за короткое время.
Когда этот код может использоваться? Когда пользователь посылает слишком много запросов за короткий промежуток времени.
Вернуться в начало
- 431 Request Header Fields Too Large
Происходит, когда сервер не собирается обрабатывать запрос, так как какое-то из полей заголовка (или все поля заголовков) слишком большое.
Когда этот код может использоваться? В основном тогда, когда заголовок запроса от пользователя больше, чем сервер способен обработать. Запрос может быть повторен после того, как будет уменьшен размер полей заголовков в запросе.
Вернуться в начало
- 444 No Response
Использовался в лог-файлах Nginx для указания того, что сервер не вернул информацию пользователю и закрыл соединение.
Когда этот код может использоваться? Обычно использовался в качестве сдерживающего фактора против вредоносного ПО.
Вернуться в начало
- 449 Retry With (Microsoft)
Расширение Microsoft, которое указывает на то, что запрос должен быть повторен после применения подходящего действия.
Когда этот код может использоваться? Этот код зачастую генерируется, когда выставленные параметры запроса не соответствуют тем, что может принять сервер.
Вернуться в начало
- 450 Blocked by Windows Parental Controls (Microsoft)
Расширение Microsoft. Эта ошибка выдается, когда параметры Windows Parental Controls выставлены на блокировку доступ к определенным веб-страницам.
Когда этот код может использоваться? Когда родители (зная об этой функции) используют родительский контроль, и id-доступа запросил доступ к заблокированному ресурсу.
Вернуться в начало
- 451 Unavailable For Legal Reasons
Новый HTTP-код состояния для ресурсов, которые заблокированы из юридических соображений. Используется для указания на то, что доступ к запрашиваемому ресурсу был заблокирован из юридических соображений: например, цензурой, или правительством.
Вернуться в начало
5xx Ошибка сервера
Коды 5xx выделены под случаи неудачного выполнения операции по вине сервера.
Эти серверные ответы зачастую отображаются, когда пользователь делает запрос, который сервер не в состоянии обработать по той или иной причине. Сервер должен включать сообщение для браузера, которое должно быть показано пользователю – в нем сообщается, что сервер (и по каким причинам) не способен обработать запрос.
- 500 Internal Server Error
Данная ошибка говорит о любой внутренней ошибке сервера, которая не входит в рамки остальных ошибок класса.
Когда этот код может использоваться? Когда ресурс или ссылка создаются на сервере (вроде календаря в системе бронирования), которые технически не существуют в виде ссылки или доступного ресурса, но показывается пользователю в виде ссылки.
Вернуться в начало
- 501 Not Implemented
Сервер либо не понимает метод в запросе, либо не поддерживает возможностей, необходимых для обработки запроса
Когда этот код может использоваться? Вы можете столкнуться с этим, когда сервер не поддерживает нормальные протоколы запроса, вроде GET, OPTIONS, HEAD, POST и т.д.
Вернуться в начало
- 502 Bad Gateway
Ответ 502 отображается, когда сервер, выступая в роли шлюза или прокси-сервера, получил недействительное ответное сообщение от вышестоящего сервера.
Когда этот код может использоваться? Обычно, когда вышестоящий сервер и прокси-сервер/шлюз не согласовывают между собой протоколы, представленные в запросе, и в результате получается ошибка при обмене данных.
Вернуться в начало
- 503 Server Unavailable
Сервер временно не имеет возможности обрабатывать запросы по техническим причинам. В основном, это состоянии является временным.
Когда этот код может использоваться? Когда сайт пользуется чрезмерным спросом, и сервер не в состоянии обработать все запросы.
Вернуться в начало
- 504 Gateway Timeout
Сервер в роли шлюза или прокси-сервера не дождался ответа от вышестоящего сервера для завершения текущего запроса.
Когда этот код может использоваться? Когда для передачи данных используется прокси-сервер/шлюз, и два сервера ждут ответов.
Вернуться в начало
- 505 HTTP Version Not Supported
Сервер не поддерживает указанную в запросе версию протокола HTTP.
Когда этот код может использоваться? В случаях, описанных выше! Когда HTTP-протокол более старый, нежели требуется серверу, и следовательно не поддерживается.
Вернуться в начало
- 506 Variant Also Negotiates
Такой ответ посылается, когда в результате ошибочной конфигурации выбранный вариант указывает сам на себя, из-за чего процесс связывания прерывается.
Когда этот код может использоваться? Когда сервер настроен некорректно, и не способен обработать запрос.
Вернуться в начало
- 507 Insufficient Storage
Когда сервер не способен разместить данные, так как не хватает места для выполнения текущего запроса.
Когда этот код может использоваться? Когда сервер уже полностью загружен, и пользователь совершает запрос на ресурс, который сервер уже имеет в запасе. Проблема заключается в том, что на сервере нет места для того, чтобы поместить данные, которые посылаются в запросе, чтобы затем выслать запрашиваемый ресурс.
Вернуться в начало
- 509 Bandwidth Limit Exceeded
Этот код ответа используется при превышении веб-площадкой отведённого ей ограничения на потребление трафика.
Когда этот код может использоваться? Когда на сервере Apache выполняется корректное расширение, и в ISP установлен уровень пропускного канала, который скоро может быть превышен. Существует несколько опций предела.
Вернуться в начало
- 510 Not Extended
Когда на сервере отсутствует расширение, которое желает использовать клиент. Когда этот код может использоваться? Когда сервер требует больше информации в совершаемом запросе.
Вернуться в начало
- 511 Network Authentication Required
Данный код состояния отображается в случае, если клиент должен сначала авторизоваться в сети, например, ввести пароль для платной точки доступа к Интернету.
Когда этот код может использоваться? Когда пользователь предварительно должен дать свое согласие на условия использования, перед тем, как он получит доступ к интернету (например, к Wi-fi точке доступа).
Итак, надеюсь, что данный список хоть как-то окажется вам полезным. Если я упустил что-то из виду, пожалуйста, допишите информацию в комментариях, и я обязательно включу ее в статью. Пожалуйста, не забудьте поделиться этой статье с друзьями, чтобы они также были в курсе.
Вернуться в начало
Если вы пытаетесь открыть COM-порт в приложении, но получаете сообщение об ошибке “COM-порт занят другим приложением”, то это означает, что порт уже используется другим процессом или приложением.
Если вы знаете, какое приложение использует порт, то вы можете попробовать закрыть это приложение, чтобы освободить порт. Если не знаете, какое приложение использует порт, то можно попробовать использовать диспетчер устройств Windows, чтобы узнать, какое устройство использует порт.
Если порт используется системным процессом или службой Windows, то его можно освободить, остановив соответствующий процесс или службу. Для этого нужно выполнить следующие действия:
- Откройте диспетчер задач (нажмите Ctrl+Shift+Esc).
- Перейдите на вкладку “Службы”.
- Найдите службу, которая использует COM-порт, и остановите ее (щелкните правой кнопкой мыши на службе и выберите “Остановить”).
- Попробуйте открыть порт снова в вашем приложении.
Если это не помогло, то возможно, что порт используется другим процессом или приложением, которое вы не можете закрыть. В таком случае можно попробовать перезагрузить компьютер, чтобы освободить порт.
I’m trying to start MySQL from XAMPP (under Windows Vista), but it’s saying that’s port 3306 is busy.
What would be the best way with check what application is using that port and how to free it?
Dharman♦
30.4k22 gold badges84 silver badges133 bronze badges
asked May 26, 2011 at 9:27
4
Just Open task manager and Kill MySql service.
answered Nov 25, 2014 at 14:36
asasasas
2012 silver badges2 bronze badges
In a command shell, run:
netstat -b -p TCP
or
netstat -an | grep -i listen | grep -E 3306
The first command will output a list that you will need to look through for the line that displays localhost:3306
in the second column. Below this is the application’s name using the port.
The secondary command will find find the exact port you are looking for and looks something like this:
<example-name>:user <example-name>$ netstat -an | grep -i listen | grep -E 3306
tcp46 0 0 *.3306 *.* LISTEN
hanorine
7,1363 gold badges14 silver badges18 bronze badges
answered May 26, 2011 at 9:33
Linus KleenLinus Kleen
33.7k11 gold badges91 silver badges99 bronze badges
2
I had the same problem and was stuck on this thing for a day and I couldn’t find a perfect answer anywhere.
So I gave it a shot on my own and it worked. This solution is for Windows users. I use Windows 7.
My xampp control panel was displaying an error that port 3306 is busy and in use by some file (name was specified).. say «filename.de».
Now follow the following steps:
- press Ctrl+Alt+Del and open Task Manager.
- Open the «Processes» list and Check for «show all processes» under the list of processes. If you don’t see any such option, don’t worry! as sometimes administrator permission is required to show some processes.
- Now, when you click on «show all processes» button, all the process will be displayed.
- Now, switch to «services» tab in the task manager, and a list of services will be displayed. Now look for a service named «filename.de» <— filename that was diplayed in the error message in xampp.
- When you find that service, ‘right-click’, and then click in option.. GoTo Process.
- You will be redirected to the «Processes» tab with focus on a process corresponding to that service. ‘Right-Click’ and then click on «end process tree».
- Now, the issue has been solved! But might have to do the same thing again when you restart your PC. So it is best to keep your PC in sleep-mode.
- Otherwise, to solve this issue permanently, open «msconfig» and uncheck that particular process from the services list and click on apply. and you can restart your system.
Nev
1,51921 silver badges18 bronze badges
answered Aug 18, 2013 at 19:09
PrabhatPrabhat
811 silver badge6 bronze badges
0
I’ve been having trouble for hours on this error. I was trying to run MySQL from XAMPP after quite some time. It gave errors, similar to yours, it said that port 3306 is in use. If you:
- are running on Windows 10
- are avoiding to change the port number of MySQL from 3306
- can’t see any program using the 3306 port from
netstat
- reinstalling and deleting everything yet it still give the same error
- are enabling and using Hyper-V
- all of the other solutions didn’t work
This is the solution that worked for me:
- Go to the most right of the taskbar and right-click the connection icon, click
Open Network & Internet settings
- Click
Change adapter options
- Right-click and Disable everything that relates to Hyper-V
I ran MySQL again at now it works.
answered Jan 11, 2021 at 12:36
rareguyrareguy
611 silver badge5 bronze badges
2
As Mentioned By @Segun Emmanuel Run the Following Command:
netstat -a -b
You will get a list of Applications that are using different PORTS. Press Ctrl + F
and write 3306 to find out which Application is using PORT 3306.
After this, Go to Task Manager via Search Bar or by pressing CTRL + ALT + DEL
. Then Under the Background Processes, find out mysqld.exe
, right-click on it and you will find an option to close it, namely «End Task
«.
Then go to your Xampp Control Panel and start the MySQL service.
answered Mar 28, 2020 at 6:19
Kashif IftikharKashif Iftikhar
2841 gold badge9 silver badges28 bronze badges
1
If mysql is not starting in xampp, it might be a port conflict issue. Mysql run by default on port 3306. you need to check if another application is occupying that port. use following command to check app occupying a port
Linux: netstat -tulpn | grep 3306
Window: netstat -a -b
Mac: lsof -nP -i4TCP:3306
if you find an application occupying that port, stop the application and restart xampp. As an alternative, you can go to php.ini file or click configure in the xampp for mysql and change the mysql port to 3307
answered Mar 9, 2019 at 12:35
ABODEABODE
9182 gold badges15 silver badges12 bronze badges
In my case it was javaw.exe which was starting on port 3306. This exe does not cause problem if I am logged in using single user in my Windows 10. But if I have multiple logins, it starts this exe for each user and blocks MySQL to start on 3306 port.
Going to task manager and killing this exe for the other user fixed the issue and MySQl could start.
answered Aug 18, 2017 at 11:29
Windows icon -> Open cmd.exe.
Type netstat -a -b
.
Find what’s using it. In my case it was this:
So, I went to task manager. There were no process called so. The I went to services and disabled these two:
Now everything works fine.
Azametzin
5,18312 gold badges28 silver badges45 bronze badges
answered Apr 14, 2020 at 13:20
I had this problem (slight variation as I was using MAMP)
I found this problem was due to having MySQL Workbench installed, MySQL Workbench started the mySQL service on bootup which in turn stopped MAMP being able to use the port.
To fix this I had 2 options,
- Uninstall MySQL Workbench
- Open Task, click services tab, kill the current MySQL service
This then allowed MAMP to use port 3306
Dharman♦
30.4k22 gold badges84 silver badges133 bronze badges
answered May 10, 2016 at 13:36
AndrewBramwellAndrewBramwell
4941 gold badge7 silver badges26 bronze badges
This error occurs if you have installed mysql two times. mysql by default uses the port 3306. If you have installed it twice then already there is a mysql at your port number 3306. So you will have to change your port.
If you are using xampp then you can easily change your port. Steps to change port:
Step 1: Open your xampp as administrator.
Step 2: Click on ‘Config’ at the top right corner of your xampp.
Step 3: Click on ‘Service and Port Settings’ and after that change the main port of mysql from 3306 to 3307 and the click on save.
Step 4: Then click on ‘config’ which is in front of mysql and open ‘my.ini’ file which will be a text file.
Step 5: Now wherever in the text file you see the port number mentioned as 3306 change it to 3307 and then save the file.
After doing this again start your mysql server and it will start running on port 3307.
This worked for me and I hope it will work for anyone else who encounters the same issue.
answered May 8, 2021 at 12:08
This command kills the existing mysql process and perhaps one can start it afresh
sudo pkill mysql
It has helped me solve this challenge most of times
1. Turn off the application which is using this port, open terminal and run "lsof -n -P -i | grep 3306" to figure out.
2. Use different ports, right click on the server -> Edit.
answered Apr 19, 2022 at 17:53
For this problem, a simpler way on Windows is:-
- Go to Task Manager
- Go to Services
- There will be a services named MySQl80 right click on it and then select
«Stop» - Try and start the MySQl module on XAMPP server again
answered Jul 19, 2019 at 7:22
If you where not able to find any application or process listening on port 3306
, you might need to check your network adapters.
-
Disable adapters you do not use.
-
Pay also attention to the Hyper-V generated network adapter, disable it if you don’t need it. Sometimes it can reserve some ports and commands like
netstat
will not be able to find it out
Dharman♦
30.4k22 gold badges84 silver badges133 bronze badges
answered Sep 18, 2020 at 12:47
WilliemWilliem
1,1311 gold badge12 silver badges19 bronze badges
- Run XAMPP with Administrator
- If you already installed MySQL Service, Uninstall it and install again. If you not already install it install MySQL Service.
answered Feb 18 at 16:33
обновить запись
версия | время | изменить содержание |
---|---|---|
1.0 | 2018-3-28 | Добавлен второй вариант |
постановка проблемы
[Экспериментальная среда]: Win7 64bit
Возможно, вы столкнетесь со следующей ошибкой:
Эта статья предлагает два решения.
Вариант первый
Теперь, когда порт занят, вам нужно выяснить, какая программа занимает порт 1080.
открытьcmd.exe
, введите команду:
netstat -aon|findstr "1080"
Последний столбец — PID, мой — 4568.
Если вы хотите узнать, какой программе соответствует этот PID, вы можете продолжить ввод:
tasklist|findstr "4568"
О, это оказался Taobao.
Откройте диспетчер задач и найдите его по PID или имени процесса:
Не сомневайтесь, просто убивайте! Щелкните правой кнопкой мыши и выберите «Завершить процесс».
На этом проблема решена.
Вариант II
Иногда вышеуказанный метод может не работать, например, процесс не может быть завершен. Затем вы можете попробовать это программное обеспечение — CurrPorts, это программное обеспечение бесплатно и не требует установки. Адрес загрузки:http://www.nirsoft.net/utils/cports.html#DownloadLinks
После загрузки разархивируйте и запустите сразуcports.exe
.
Найдите занятый порт, щелкните правой кнопкой мыши и выберите «Закрыть выбранные TCP-соединения».
На данный момент проблема решена.
Содержание
- Проблема
- Решение
- Другие причины ошибки
Проблема
Часто пользователи 1С, при входе в РМК (рабочее место кассира), сталкиваются со следующей ошибкой оборудования «фискальный регистратор»:
Не удалось подключить устройство «АТОЛ:ККТ с передачей данных в ОФД… Порт занят (999)»
Решение
Если ошибка появляется в РМК, чаще всего причина заключается в том, что у пользователя уже открыта другая версия 1С, и там тоже открыто РМК. Закройте обе версии программы и войдите вновь.
Также эта ошибка появляется в том случае, если в настоящий момент в Windows запущено приложение «Тест драйвера ККТ» и на пункте включено стоит галочка.
Другие причины ошибки
Среди других причин ошибки 999 можно выделить:
- Сбой ПО на компьютере или в самом оборудовании
- COM порт занят другим оборудованием