Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5.1-未根据请求设置会话存储_Php_Laravel - Fatal编程技术网

Php Laravel 5.1-未根据请求设置会话存储

Php Laravel 5.1-未根据请求设置会话存储,php,laravel,Php,Laravel,我试图在WAMP上将Laravel 4.1应用程序升级到5.1,但出现以下错误: Request.php第775行中的RuntimeException:未在上设置会话存储 请求 在 D:\wamp\www\laravel-5.1\vendor\laravel\framework\src\light\Http\Request.php 第775行应请求->中的会话() D:\wamp\www\laravel-5.1\vendor\laravel\framework\src\light\Foundat

我试图在WAMP上将Laravel 4.1应用程序升级到5.1,但出现以下错误:

Request.php第775行中的RuntimeException:未在上设置会话存储 请求

在 D:\wamp\www\laravel-5.1\vendor\laravel\framework\src\light\Http\Request.php 第775行应请求->中的会话() D:\wamp\www\laravel-5.1\vendor\laravel\framework\src\light\Foundation\Http\Middleware\VerifyCsrfToken.php VerifyCsrfToken->AddCookietoreResponse(对象(请求))处的第137行, VerifyCsrfToken.php第64行中的 VerifyCsrfToken->handle(对象(请求)、对象(关闭))位于 调用用户函数数组(数组(对象(VerifyCsrfToken),'handle'), Pipeline.php第124行中的数组(对象(请求)、对象(闭包)),位于 管道->照明\管道{closure}(对象(请求))位于 在Pipeline.php行中调用_user_func(对象(闭包)、对象(请求)) 30 at Pipeline->illumb\Routing{closure}(对象(请求))at 在Pipeline.php行中调用_user_func(对象(闭包)、对象(请求)) 103在ControllerDispatcher.php中的管道->然后(对象(闭包)) 第96行在 ControllerDispatcher->callWithinStack(对象(浏览器控制器), 中的对象(路由)、对象(请求)、“GetBrowserRecent”) ControllerDispatcher.php第54行 调度员调度员->调度(对象(路线)、对象(请求), 中的“App\Http\Controllers\BrowseController”、“GetBrowserRecent”) 中的Route->runController(对象(请求))处的Route.php第174行 Route.php行中Route->run(对象(请求))处的Route.php行140 703 at路由器->照亮\路由{closure}(对象(请求))at 在Pipeline.php行中调用_user_func(对象(闭包)、对象(请求)) 139在中的管道->照明\管道{closure}(对象(请求))处 ViewThrottleMiddleware.php第55行位于 ViewThrottleMiddleware->handle(对象(请求)、对象(关闭))位于 调用(用户)函数(数组(对象(ViewThrottleMiddleware),"句柄"),, Pipeline.php第124行中的数组(对象(请求)、对象(闭包)),位于 管道->照明\管道{closure}(对象(请求))位于 在Pipeline.php行中调用_user_func(对象(闭包)、对象(请求)) 30 at Pipeline->illumb\Routing{closure}(对象(请求))at 在Pipeline.php行中调用_user_func(对象(闭包)、对象(请求)) 103 at Pipeline->then(object(Closure))在Router.php第705行at 路由器->中的runRouteWithinStack(对象(路由)、对象(请求)) Router.php第678行在路由器->调度路由(对象(请求))中 Kernel.php中Router->dispatch(object(Request))处的Router.php第654行 第246行at 内核->照亮\Foundation\Http{closure}(对象(请求))位于 在Pipeline.php行中调用_user_func(对象(闭包)、对象(请求)) 139在中的管道->照明\管道{closure}(对象(请求))处 CheckFormIntenanceMode.php第44行 检查窗体维护模式->句柄(对象(请求)、对象(关闭)) 调用_user_func_数组(数组(对象(CheckFormIntenanceMode),'handle'), Pipeline.php第124行中的数组(对象(请求)、对象(闭包)),位于 管道->照明\管道{closure}(对象(请求))位于 在Pipeline.php行中调用_user_func(对象(闭包)、对象(请求)) 103 at Pipeline->then(object(Closure))在Kernel.php第132行at Kernel.php行中的Kernel->sendRequestThroughRouter(对象(请求)) 99位于index.php第54行的内核->句柄(对象(请求))

存储
文件夹是可写的,使用的会话驱动程序是
文件
。我在整个项目中搜索了
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,

];

我把它注释掉了,它成功了。但是我还没有弄清楚它为什么会导致这个问题。

看看@Cas Bloem他在这里的回答,这让我惊讶地发现:

这就是为什么它对我不起作用。因为您使用的会话期望与CSRF令牌相匹配(这是我的最佳猜测,我本人对Laravel是新手)

此外,如果您转到应用程序->http->中间件->VerifyCsrfToken,则可以将路由添加到阵列中,而该阵列将不会进行CSRF验证。这加上Cas Bloem-his修复(将路由放在routes.php的不同部分)修复了我的问题。我现在只是在本地主机上开发/学习,但稍后需要实现它


希望这有助于解决问题

看看@Cas Bloem他在这里的回答,这让我感到惊讶:

这就是为什么它对我不起作用。因为您使用的会话期望与CSRF令牌相匹配(这是我的最佳猜测,我本人对Laravel是新手)

此外,如果您转到应用程序->http->中间件->VerifyCsrfToken,则可以将路由添加到阵列中,而该阵列将不会进行CSRF验证。这加上Cas Bloem-his修复(将路由放在routes.php的不同部分)修复了我的问题。我现在只是在本地主机上开发/学习,但稍后需要实现它


希望这有助于解决问题

此错误何时出现?请显示
sessions.php
config。还有,您是否遵循文档升级过程?我检查了升级文档,并尝试从
App\Http\Middleware\VerifyCsrfToken
中删除
'App\Http\Kernel
,但没有任何帮助。csrf仍然在
php artisan route:list
中显示为中间件。这是原因吗?此链接表示您必须创建另一个具有新框架依赖关系的应用程序。并将您的4.1控制器路由等复制到新应用程序。谢谢@VishalSh。请查看我的更新。此错误何时出现?请显示
sessions.php
config。还有,您是否遵循文档升级过程?我检查了升级文档,并尝试从
App\Http\Middleware\VerifyCsrfToken
中删除
'App\Http\Kernel
,但没有任何帮助。csrf仍然在
php artisan route:list
中显示为中间件。这是原因吗?此链接表示您必须创建一个
$this->middleware('csrf', [ 'on' => 'post' ]);