【问题标题】:Laravel 5.2 Method Not Allowed Exception on Production ServerLaravel 5.2 生产服务器上的方法不允许异常
【发布时间】:2017-09-19 11:46:24
【问题描述】:

我从laravel 中构建了一个简单的方法,它获取一些数据并将其存储在数据库中。

当我将代码上传到生产服务器时出现问题。 在开发和本地它工作得很好,但是当我尝试在生产服务器上提交相同的表单时,它会抛出以下异常:

RouteCollection.php 第 218 行中的 MethodNotAllowedHttpException:

我已经检查了我的 form 和 route 方法 都已发布。我迷路了。

路线代码

Route::get('/', function () {
    return view('welcome'); 
});
Route::group(['middleware' => ['web']], function () {
    Route::get('auth/register', 'Auth\AuthController@register');
    Route::post('/ajax-registration','RegistrationController@registration');
    Route::post("/signup", "Api\ApplicantRegistrationController@registration");
    Route::auth();

    Route::get('/home', 'HomeController@index');
    Route::get('/roles/{id}',"HomeController@roles");
    Route::post('/complete-profile', 'HomeController@completeProfile');
});

控制器代码(我从路由调用的函数)

public function completeProfile(Request $request){
    If(Input::hasFile('file')){

        $file = Input::file('file');
        $cDate = date("d-m-Y_H:i:s");
        $destinationPath = public_path(). '/uploads/';
        $filename = $cDate."_".$file->getClientOriginalName();

        $file->move($destinationPath, $filename);

    }
    $insert = DB::table('Applicant')->insert(
        [
            'name' => Auth::user()->name, 
            'email' => Auth::user()->email, 
            'total_experience' => $request->input('int_exp'), 
            'functional_area' => $request->input('txtFunctionalArea'), 
            'current_role' => $request->input('txtRole'), 
            'current_company' => $request->input('company'), 
            'desired_role' => $request->input('txtRole2'), 
            'file' => $filename
        ]);
    \DB::table('users')->where('email', Auth::user()->email)->update(['allInformationReceived' => 1]);
    if($insert){
        return redirect('/home');
    }
    else{
        return 'Some Error';
    }
}

表格

<form id="signupform" method="POST" action="complete-profile" class="mob-pad0" enctype="multipart/form-data" style="padding: 20px 250px;">
    <div class="col-md-6 col-xs-12 mob-pad0 padd-right60">
      <div class="form-horizontal">
        <div class="form-group">
          <label for="int_exp">Total Experience</label>
          <select class="form-control border-radius0" name="int_exp" id="int_exp" tabindex="2" required="required">
            <option value="">Select</option>
            Dropdown Using Ajax
            <option value="15+">15+</option>
          </select>
        </div>
        <div class="form-group">
          <label for="txtFunctionalArea">Functional Area</label>
          <select class="form-control border-radius0" name="txtFunctionalArea" id="txtFunctionalArea" tabindex="3" required="required"> 
            <option value="">Select</option>                    
            <option value="32">IT Software- Application Programming / Maintenance </option>
            <option value="37">IT Software- Network Administration / Security     </option>
          </select>
        </div>
        <div class="form-group">
          <label for="txtRole2">Desired Role</label>
          <select class="form-control border-radius0" name="txtRole2" id="txtRole2" tabindex="6" required="required">
              <option value="">Select</option>  
              Dropdown Using Ajax
          </select>
        </div>
      </div>
    </div>

    <div class="col-md-6 col-xs-12 mob-pad0 padd-right60">
      <div class="form-horizontal">
        <div class="form-group">
          <label for="company">Current Company</label>
          <input name="company" id="company" type="text" placeholder="Current Company" class="form-control border-radius0" required="required" tabindex="5"/>
        </div>            
        <div class="form-group">
          <label for="txtRole">Current Role</label>
          <select class="form-control border-radius0" name="txtRole" id="txtRole" tabindex="4" required="required">
              <option value="">Select</option> 
              Dropdown Using Ajax 
          </select>
        </div>
        <div class="form-group">
          <label for="resume">Resume (PDF/DOC)</label>
          <input type="file" name="file" id="resume" class="form-control border-radius0" required="required" accept=".pdf,.doc, .docx" onchange="validate_fileupload(this);">
        </div>
      </div>
    </div>
    <input type="hidden" id="csrfToken" name="_token" value="{{ csrf_token() }}">
    <div class="col-sm-12 col-xs-12 mob-pad0 text-center padd30">
      <input type="submit" id="submitbtn_2" value="Get Started" class="inputButton btn btn-success"/>
    </div>
</form>

任何帮助将不胜感激,谢谢。

【问题讨论】:

  • 请出示您的路由和控制器代码
  • 这通常是由于没有使用正确的方法,GET而不是POST或其他方式!
  • 尝试将其更改为 any 而不是 get 或 post。以确保您走在正确的轨道上。或发布您的路线和表单 html。
  • 也分享调用/complete-profile的表单?
  • 好吧,在将它发布到这里之前,我用谷歌搜索了它,我可以在任何地方搜索它,就像获取/发布一样。我在我的代码中检查了很多次。但是,问题是为什么它只发生在生产服务器中,我该如何修复它?

标签: php laravel-5


【解决方案1】:

感谢大家的意见,我在以下网址找到了解决方案:

MethodNotAllowedException

并在我的代码中做了两处更改:

路由中的一个,将方法更改为任何 和一个形式,将 post 方法更改为 PUT。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-13
    • 2018-02-02
    • 1970-01-01
    • 1970-01-01
    • 2018-01-17
    • 2017-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多