【问题标题】:Laravel POST request on cpanel gets 405 error back sometimescpanel 上的 Laravel POST 请求有时会返回 405 错误
【发布时间】:2021-02-13 19:08:14
【问题描述】:

所以,这是我关于堆栈溢出的第一篇文章,如果我遗漏了什么,请告诉我。

所以我有一些我无法弄清楚的奇怪问题。 我有一个 laravel 8 应用程序,在我的机器上运行它,一切似乎都很好,在将它上传到 cpanel 后,我遇到了这个奇怪的问题。

我有一个表格:

<form action="{{ route('articles.store') }}" method="POST" class="form-horizontal" role="form" enctype="multipart/form-data">
    @csrf
    ...
    <input type="submit" value="Post" class="btn btn-primary">
</form>

表单有一些输入,一个文本区域和一个文件输入。 这些是我的路线:

Route::prefix('articles')->middleware(['auth:sanctum', 'verified'])->group(function(){
    Route::get('/create', [\App\Http\Controllers\ArticleController::class, 'create'])->name('articles.create');
    Route::post('/store', [\App\Http\Controllers\ArticleController::class, 'store'])->name('articles.store');
});

当我提交表单时,我得到 此路由不支持 GET 方法。支持的方法:POST。错误。

我在 chrome 中打开了网络控制台,选中了保留日志复选框并再次发出请求,在列表中它看起来像发出了 POST 请求,但收到了 405

我在我的 cpanel 选择 PHP 版本 页面中检查了 post_max_sizeupload_max_size 选项,它们为 1G .

另外,尝试将路由更改为 PUT 并使用 @method('PUT') 但我得到了相同的结果。

另外,一个奇怪的部分是,如果我提交的表单没有任何内容,它可以正常工作,我会按预期返回验证,但只要我填写了其中一个字段,我就会收到方法不允许错误。

也许你们知道这里发生了什么,并指出我正确的方向。

谢谢!

【问题讨论】:

  • 能不能再测试一下,去掉中间件就行了?
  • @justMike 您在表单中有任何隐藏字段吗?您可以发布表单中的所有字段吗?还尝试运行命令 php artisan route:list 并查看您是否看到articles.store 的正确路径
  • 我的表单中没有隐藏字段,只有来自@csrf 的csrf。运行路线:列表,就是这样:| |发布 |文章/商店 |文章商店 |应用\Http\Controllers\ArticleController@store | App\Http\Middleware\EncryptCookies |
  • 好像不能发表格,因为内容太大了。
  • 405 methodNotAllowed 异常表示您请求的 HTTP 方法不存在路由。 @justMike 你是在使用 http 还是 https?

标签: php laravel http-status-code-405


【解决方案1】:

你能在服务器上用下面的命令清除路由缓存,然后重试吗?

php artisan route:cache

【讨论】:

  • 我多次运行该命令,但结果是一样的。我还从路由组中删除了中间件,但没有效果。
猜你喜欢
  • 2020-05-12
  • 2019-12-24
  • 2016-10-16
  • 2019-05-16
  • 1970-01-01
  • 2020-05-02
  • 2015-11-07
  • 1970-01-01
  • 2013-11-26
相关资源
最近更新 更多