我试图在WAMP上将Laravel 4.1应用程序升级到5.1,并得到了以下错误:
RuntimeException第775行中的Request.php :未根据请求设置会话存储。 在D:\wamp\www\laravel-5.1\vendor\laravel\framework\src\Illuminate\Http\Request.php第775行中,请求->session()在D:\wamp\www\laravel-5.1\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\VerifyCsrfToken.php中,第137行在VerifyCsrfToken->addCookieToResponse(object(Request),对象(响应)处,在VerifyCsrfToken.php第64行,在VerifyCsrfToken->句柄(对象(请求),对象(闭包))在call_user_func_array(array(object(VerifyCsrfToken),在Pipeline->Illuminate\Pipeline{closure}(object(Request)) at Pipeline->Illuminate\Routing{closure}(object(Request)) at call_user_func(object(闭包),object(Request))的Pipeline.php第124行(object(Call_user_func),object(Request))在Pipeline.php第30行的call_user_func(object(闭包))中的‘Pipeline.php’数组(对象(请求),object(闭包))。对象(请求)在ControllerDispatcher->callWithinStack(object(BrowseController),对象(路由)处,Pipeline.php行第54行中的对象(请求)->调度(对象(路由),对象(请求),对象(请求),‘App\Http\Controller\BrowseController’,'getBrowseRecent')在Route.php 174号线在路由->runController(对象(请求))在Route.php第140号线在路由->运行(对象(请求))在Router.php第703行在Route.php at call_user_func(object(闭包),object(Request))在Pipeline.php第139行在ViewThrottleMiddleware.php第55行在ViewThrottleMiddleware->handle(object(Request),call_user_func_array(array(object(ViewThrottleMiddleware),‘句柄’处的对象(闭包),在Pipeline->Illuminate\Pipeline{closure}(object(Request)) at call_user_func(object(闭包))的Pipeline.php第124行中的数组(object(Request),object(闭包)),Pipeline.php第30行( Pipeline->Illuminate\Routing{closure}(object(Request)) at call_user_func(object(闭包))中的object(Request))。对象(请求)在Pipeline.php行103中位于管道上->然后在Router.php行705 at路由器->runRouteWithinStack(对象(路由),对象(请求))在Router.php行678 at路由器->DispatchTo路由(对象(请求))在Router.php第654行的路由器->调度(对象(请求))在Kernel.php第246行的call_user_func(对象(关闭)),对象(请求)在Pipeline->Illuminate\Pipeline{closure}(object(Request))处的Pipeline.php第139行( CheckForMaintenanceMode.php第44行)在call_user_func_array(array(object(CheckForMaintenanceMode),‘句柄’处的CheckForMaintenanceMode.php对象(闭包),在Pipeline.php第124行中的数组(对象(请求)、对象(闭包))(在call_user_func(object(闭包)处))。对象(请求)在管道处的Pipeline.php行103中,然后( Kernel.php行中的对象(闭包))在Kernel.php行132处,在Kernel.php中,在内核处,第99行,在内核处->句柄(对象(请求)),在index.php行54中。
storage
文件夹是可写的,使用的会话驱动程序是file
。我搜索了整个项目的session()
,但没有找到它。我能做些什么来纠正这个错误?谢谢!
session.php
如下:
<?php
return [
'driver' => env('SESSION_DRIVER', 'file'),
'lifetime' => 120,
'expire_on_close' => false,
'encrypt' => false,
'files' => storage_path('framework/sessions'),
'connection' => null,
'table' => 'sessions',
'lottery' => [2, 100],
'cookie' => 'laravel_session',
'path' => '/',
'domain' => null,
'secure' => false,
];
编辑1:我发现了控制器中的问题。有一条线:
$this->middleware('csrf', [ 'on' => 'post' ]);
我把它评论掉了,它起了作用。但我还不知道为什么会有这个问题。
发布于 2015-12-25 19:33:20
看看@Cas Bloem --他在这里的回答--这使我吃惊地说:
Laravel - Session store not set on request
这就是为什么它不适合我。因为您使用的是一个与CSRF令牌相匹配的会话(这是我最好的猜测,我自己对Laravel来说还是新手)。
另外,如果您转到app->http->中间件->VerifyCsrfToken,您可以将路由添加到不会被检查以进行CSRF验证的数组中。这个加Cas的补丁(在routes.php中的不同区域放置路径)解决了我的问题。我现在只是在本地主机上开发/学习,但需要稍后实现。
希望这能帮上忙/把事情弄清楚!
https://stackoverflow.com/questions/34446228
复制相似问题