2017-05-02 22 views
1

私のLaravel 5.4プロダクションサーバーでは、複数の認証システムを実装した後、php artisan config:cacheコマンドを実行するのを忘れていました。それは私の開発環境ではうまく動作しますが、実際には動作したくありません。キャッシュコマンドを実行して以来、私はこの時点までにすべてのエラーを解決しました。しかし、私はこの1つにこだわっており、本当にそれを取るか分からない。私が提供していない情報は、お気軽にお問い合わせください。手伝ってくれてどうもありがとう。Laravel 5.4 - 要求に応じてセッションストアが設定されていません

namespace App\Exceptions; 

use Exception; 
use Illuminate\Auth\AuthenticationException; 
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; 

class Handler extends ExceptionHandler 
{ 
    protected $dontReport = [ 
     \Illuminate\Auth\AuthenticationException::class, 
     \Illuminate\Auth\Access\AuthorizationException::class, 
     \Symfony\Component\HttpKernel\Exception\HttpException::class, 
     \Illuminate\Database\Eloquent\ModelNotFoundException::class, 
     \Illuminate\Session\TokenMismatchException::class, 
     \Illuminate\Validation\ValidationException::class, 
    ]; 

    public function report(Exception $exception) 
    { 
     parent::report($exception); 
    } 

    public function render($request, Exception $exception) 
    { 
     return parent::render($request, $exception); 
    } 

    /** 
    * Convert an authentication exception into an unauthenticated response. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Illuminate\Auth\AuthenticationException $exception 
    * @return \Illuminate\Http\Response 
    */ 
    protected function unauthenticated($request, AuthenticationException $exception) 
    { 
     if ($request->expectsJson()) { 
      return response()->json(['error' => 'Unauthenticated.'], 401); 
     } 

     $guard=array_get($exception->guards(),0); 

     switch ($guard) { 
      case 'admin': 
       $login='admin.login'; 
       break; 

      default: 
       $login='login'; 
       break; 
     } 
     return redirect()->guest(route($login)); 
    } 
} 


namespace App\Http\Middleware; 
use Closure; 
use Illuminate\Support\Facades\Auth; 

class RedirectIfAuthenticated 
{ 
    public function handle($request, Closure $next, $guard = null) 
    { 
    switch ($guard) { 
     case 'admin': 
      if (Auth::guard($guard)->check()) { 
      return redirect()->route('admin'); 
        }   
      break; 

     default: 
      if (Auth::guard($guard)->check()) {  
      return redirect('/user'); 
      } 
      break; 
     } 
     return $next($request); 
    } 
} 



namespace App\Http; 

use Illuminate\Foundation\Http\Kernel as HttpKernel; 

class Kernel extends HttpKernel 
{ 
    protected $middleware = [ 
     \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, 
     \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, 
     \App\Http\Middleware\TrimStrings::class, 
     \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, 
    ]; 

    protected $middlewareGroups = [ 
     'web' => [ 
      \App\Http\Middleware\EncryptCookies::class, 
      \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 
      // \App\Http\Middleware\StartSession::class, 
      \Illuminate\Session\Middleware\StartSession::class, 
      // \Illuminate\Session\Middleware\AuthenticateSession::class, 
      \Illuminate\View\Middleware\ShareErrorsFromSession::class, 
      \App\Http\Middleware\VerifyCsrfToken::class, 
      \Illuminate\Routing\Middleware\SubstituteBindings::class, 
     ], 

     'api' => [ 
      'throttle:60,1', 
      'bindings', 
     ], 
    ]; 

    protected $routeMiddleware = [ 
     'auth' => \Illuminate\Auth\Middleware\Authenticate::class, 
     'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 
     'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, 
     'can' => \Illuminate\Auth\Middleware\Authorize::class, 
     'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 
     'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 
    ]; 
} 



RuntimeException in Request.php line 388:Session store not set on request. 
1. in Request.php line 388 
2. at Request->session() in ShareErrorsFromSession.php line 42 
3. at ShareErrorsFromSession->handle(object(Request), object(Closure)) in Pipeline.php line 148 
4. at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53 
5. at Pipeline->Illuminate\Routing\{closure}(object(Request)) in StartSession.php line 64 
6. at StartSession->handle(object(Request), object(Closure)) in Pipeline.php line 148 
7. at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53 
8. at Pipeline->Illuminate\Routing\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37 
9. at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) in Pipeline.php line 148 
10. at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53 
11. at Pipeline->Illuminate\Routing\{closure}(object(Request)) in EncryptCookies.php line 59 
12. at EncryptCookies->handle(object(Request), object(Closure)) in Pipeline.php line 148 
13. at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53 
14. at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 102 
15. at Pipeline->then(object(Closure)) in Router.php line 561 
16. at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 520 
17. at Router->dispatchToRoute(object(Request)) in Router.php line 498 
18. at Router->dispatch(object(Request)) in Kernel.php line 174 
19. at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) in Pipeline.php line 30 
20. at Pipeline->Illuminate\Routing\{closure}(object(Request)) in TransformsRequest.php line 30 
21. at TransformsRequest->handle(object(Request), object(Closure)) in Pipeline.php line 148 
22. at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53 
23. at Pipeline->Illuminate\Routing\{closure}(object(Request)) in TransformsRequest.php line 30 
24. at TransformsRequest->handle(object(Request), object(Closure)) in Pipeline.php line 148 
25. at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53 
26. at Pipeline->Illuminate\Routing\{closure}(object(Request)) in ValidatePostSize.php line 27 
27. at ValidatePostSize->handle(object(Request), object(Closure)) in Pipeline.php line 148 
28. at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53 
29. at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 46 
30. at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 148 
31. at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53 
32. at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 102 
33. at Pipeline->then(object(Closure)) in Kernel.php line 149 
34. at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 116 
35. at Kernel->handle(object(Request)) in index.php line 53 
+0

Webミドルウェアグループのセッションミドルウェア行のコメントを外す必要があると思います。このエラーは、ShareErrorsFromSessionミドルウェアで必要とされるセッション機能が不足しているために発生する可能性があります。 –

+0

いい考え - それは運がなかったが – Pete

答えて

5

のエラーから見てみましょう:

Session store not set on request.

これは、Requestオブジェクトは、それに関連付けられたセッションオブジェクトを持っていないことを意味します。ただし、ShareErrorsFromSessionはsessionを使用してエラーメッセージを表示します。それでは、ここにいくつか問題があると言うことができます:

// \App\Http\Middleware\StartSession::class, 

StartSessionミドルウェアは、リクエストにセッションオブジェクトを設定する責任を負うものです。無効にすると、ShareErrorsFromSessionにアクセスできなくなります。

しかし、使用しなければならないセッションドライバであるStartSessionミドルウェアを示す有効なSESSION_DRIVERがない場合は、コメントを外すだけでは不十分かもしれません。最後に、.envファイルを確認し、有効なセッションドライバを使用してください。

これはマチューの答えを補完するものです:あなたのウェブサーバーはstorage/というフォルダに書き込み権限を必要とします。達成する最も簡単な方法はchmod 777です。詳細については、スクリプトがどのように呼び出され、どのユーザがNginxを制御しているかを知っている場合は、そのユーザが所有するファイルを準備して755に設定することができます。

+0

あなたはこれでトンを手伝った--ENS SESSION_DRIVERは何とかnullに設定された...すべて – Pete

+0

すべての可能な原因が含まれています! +1 – Miron

0

storageフォルダのアクセス権を確認しましたか?

開始されない場合:

chmod -R 777 storage/ 
+0

それは775を持っていた... 777に変わった、nginxを再起動したが、同じエラー – Pete

関連する問題