【问题标题】:laravel MethodNotAllowedHttpException when do POST on online serverlaravel MethodNotAllowedHttpException 在在线服务器上进行 POST 时
【发布时间】:2019-07-13 15:47:41
【问题描述】:

我在在线服务器上运行时出现 MethodNotAllowedHttpException,但在本地服务器上运行良好。

PHP版本相同,使用POST方式。 除了这个之外,其他 POST 方法都运行良好。

关于blade.php

<form action="{{ route('update.product') }}" method="POST" enctype="multipart/form-data" class="form-horizontal js-form">

关于路线/web.php

Route::post('/updateProduct', [
   'uses' => 'AdminController@updateProducts',
   'as' => 'update.product'
]);

更新:

在我将路线更改为“获取”之后

Route::get('/updateProduct', [
   'uses' => 'AdminController@updateProducts',
   'as' => 'update.product'
]);

它到达了 updateProducts 函数。

但当然没有要处理的数据。那么,为什么我的 post 方法表单发送了 get 方法?在浏览器开发者工具上我有 POST 吗?

但在我的本地服务器上运行良好只有在在线服务器上我遇到了这个问题。

browser dev tools

【问题讨论】:

  • 检查有没有类似名称的方法update.product
  • 检查任何缓存写入权限。此错误常见于 No route match 导致。
  • 您的浏览器开发工具显示什么? POST 是否真的在发生,并且指向正确的 URL?表格中是否包含任何method spoofing
  • 嗨@Shibon,没有类似名称的方法
  • 嗨@daremachine,如何查看缓存的写入权限?

标签: php laravel post routes


【解决方案1】:

如果你使用 laravel 集体,你能尝试使用不同的方法吗?
{!! Form::open(['url' =&gt; 'client/store','method'=&gt;'post','id'=&gt;'client-register']) !!}

在路线上它必须是

Route::post('client/store', 'ClientController@store')&gt;name('client.store')

或者你可以写下你的动作

action="{{URL::to('client/store')}}"

首先看看路由是否定义正确。

您也可以尝试使用 artisan 命令清除缓存。

php artisan config:cache

希望对你有帮助。

【讨论】:

  • 嗨,感谢您的回答。你的意思是 config:clear 吗?实际上我尝试过 cache:clear 和 config:clear 但它没有帮助。我认为路由定义正确,因为它在我的本地服务器上运行良好
【解决方案2】:

由于服务器上缺少模块扩展 PDO 数据库而出现此问题,因此将文件上传到应用程序会引发错误。

安装模块扩展将解决此问题。

【讨论】:

    猜你喜欢
    • 2020-07-22
    • 2017-09-21
    • 2015-06-02
    • 2019-07-30
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    相关资源
    最近更新 更多