首页 > 解决方案 > cpanel 上的 Laravel POST 请求有时会返回 405 错误

问题描述

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

所以我有一些我无法弄清楚的奇怪问题。我有一个 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

chrome 检查器的网络选项卡中的呼叫图片

我在我的 cpanel Select PHP Version页面中检查了post_max_sizeupload_max_size选项,它们是1G

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

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

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

谢谢!

标签: phplaravelhttp-status-code-405

解决方案


可以在服务器上用下面的命令清除路由缓存再试吗?

php artisan route:cache

推荐阅读