Что такое ошибка 405 Not Allowed
Эта ошибка означает, что сервер на котором расположен сайт, выполнял какую-то операцию и на определенном этапе получил на это запрет.Как исправить ошибку 405?
Обычно, такая ситуация возникает по следующим причинам:Вы импортируете\экспортируете слишком большую базу данных через PHP-скрипт
Практически на каждом хостинге, существует ограничение по времени, на работу конкретного php-скрипта (обычно около 30 секунд). И по истечении этого времени, у вас появится сообщение об ошибке.Как исправить? Здесь есть три варианта решения:
- Используйте для экспорта\импорта баз данных веб-интерфейс phpMyAdmin. Это наиболее популярный способ переноса БД, и том как правильно это сделать можно почитать в соответствующей статье.
- Другой вариант (если у вас получится) - разбейте ваш файл по частям, передача которых будет укладываться в отведенное время, и таким образом Вы избежите ошибки.
- создать 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