Ответ сервера 405 Not Allowed

Kate

Administrator
Команда форума

Что такое ошибка 405 Not Allowed​

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

Как исправить ошибку 405?​

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

Вы импортируете\экспортируете слишком большую базу данных через PHP-скрипт​

Практически на каждом хостинге, существует ограничение по времени, на работу конкретного php-скрипта (обычно около 30 секунд). И по истечении этого времени, у вас появится сообщение об ошибке.

Как исправить? Здесь есть три варианта решения:

  1. Используйте для экспорта\импорта баз данных веб-интерфейс phpMyAdmin. Это наиболее популярный способ переноса БД, и том как правильно это сделать можно почитать в соответствующей статье.
  2. Другой вариант (если у вас получится) - разбейте ваш файл по частям, передача которых будет укладываться в отведенное время, и таким образом Вы избежите ошибки.
  3. создать Cron-задачу (ищите в панели управления хостинга раздел Cron и жмите "Создать задачу" или что-то подобное). В поле "Задача" вписывайте путь к вашему скрипту, который переносит данные. В таком случае лимит времени на его исполнение может вырасти до 300 секунд, и скорее всего Вам этого хватит для переноса БД. Но не у всех провайдеров это может сработать.

PHP-скрипт на вашем сайте пытается вызывать файлы с такими расширениями, которые должен обрабатывать Apache-сервер​

Как исправить? Для начала по логам сервера (смотрите POST-запросы с ошибкой) нужно определить, что проблема заключается именно в этом. Если да, то найдите в панели управления хостингом раздел "Статические файлы" и удалите те расширения, которые мешают нормальной работе скрипта. Важно! Изменения могут вступить в силу в течении 1-2 часов.

Попытка доступа к файлам с помощью некорректного метода​

Чаще всего так происходит когда идет попытка доступа к статическим файлам через POST.

Как исправить? Можно просто грубым образом вместо 405 ошибки, показывать, что все OK (ответ 200)

server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 405 =200 $uri;
# ...
}
При работе через прокси, можно отправить запрос туда:

error_page 405 =200 @405;
location @405 {
root /htdocs;
proxy_pass http://localhost:8080;
}

Проблемы с FastCGI​

Все тот же POST-запрос может вызывать проблем с модулем FastCGI и выдавать ошибку.

Как исправить?Отделяем от запроса УРЛ скрипта и его параметры:

location ~\.php(.*) {
fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include /etc/nginx/fastcgi_params;
}

Источник статьи: https://ru.hostings.info/schools/405-not-allowed.html
 
Сверху