MethodNotAllowedHttpException в строке 200 RouteCollection.php:

У меня есть объявление о маршруте здесь

//Skill
Route::get('skill','SkillController@index');
Route::get('skill/create','SkillController@create');
Route::post('skill/store','SkillController@store');
Route::get('skill/{id}','SkillController@show');
Route::get('skill/{id}/edit', 'SkillController@edit');
Route::post('skill/{id}/update','SkillController@update');
Route::delete('skill/{id}/destroy','SkillController@destroy');

С этими маршрутами я могу удалить штраф на локальном.

Когда я пытался удалить на продакшене, я продолжал получать

MethodNotAllowedHttpException в строке 200 RouteCollection.php:

Я точно знаю, у меня была эта строчка

Route::delete('skill/{id}/destroy','SkillController@destroy');

  • Local и Prod имеют одинаковую кодовую базу.
  • Локальный = Mac OS X
  • Prod = Сервер Ubuntu

Что я пропустил?

Вы действительно отправляете HTTP-запрос DELETE? Как вы пришли к этому снимку экрана?

ege 12.09.2018 06:31

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

ege 12.09.2018 06:48

Я проверю свою форму как HTML-код. Хорошие подсказки: D!

code8888 12.09.2018 06:49
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
3
295
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

Часто веб-серверы настраиваются на блокировку чего-либо, кроме GET и POST, поскольку в 99% случаев они все, что нужно, и в прошлом были проблемы с приложениями, предполагающими, что запросы были одним из этих двух.

Вы можете попробовать .htaccess с

<Limit GET POST PUT DELETE>
 Allow from all
</Limit>

(Я не специалист по apache, возможно, это не совсем правильно)

Хорошо, позволь мне попробовать.

code8888 12.09.2018 06:49

Ага. дайте мне знать, если проблема не исчезнет.

Leena Patel 12.09.2018 06:59
Ответ принят как подходящий

Маршрут запускается из формы ... Да? Ваш метод формы должен быть POST, а не DELETE, и затем вы должны добавить скрытый ввод, чтобы он работал как маршрут DELETE, тем самым помогая вам поддерживать Route::delete().
Ваша форма должна выглядеть так:

<form action = "/foo/bar" method = "POST">
    <input type = "hidden" name = "_method" value = "DELETE">

И ваш маршрут:

Route::delete('skill/{id}/destroy','SkillController@destroy');

Прочтите https://laravel.com/docs/5.7/routing#form-method-spoofing для получения дополнительной информации.

У меня 5.1 - проверьте свой ответ.

code8888 12.09.2018 06:49

Не проблема ... Спуфинг метода поддерживается в 5.1 ... Просто зайдите в laravel.com/docs/5.1/routing#form-method-spoofing

Chukwuemeka Inya 12.09.2018 06:53

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

MethodNotAllowedHttpException: It means that the route is correct, but method is mistaken. You used POST method - this method is automatic if you use browser. But you need DELETE method.

Чтобы использовать метод DELETE, вы должны использовать клиент API. PhpStorm имеет встроенный API-клиент API. Клиентская документация PHPStorm RESTApi

Но! Для меня лучший способ - использовать Почтальон! Почтальон отправляет запросы документы

Другие вопросы по теме