在Laravel 5.3中未设置Cookie

时间:2019-07-12 13:19:41

标签: php laravel cookies session-cookies setcookie

我在Nginx提供的VPS ubuntu上安装了Laravel,它在那里正常工作。 PHP是php-fpm7.0

现在,我将其转移到CPanel托管,然后问题开始了。现在和过去都在使用Cloudflare。

Laravel版本:5.3.13

PHP版本:已测试5.6、7.0、7.1、7.2

我收到TokenMismatch错误,因为未设置cookie和会话。

.env 包含:

BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

config / 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',
    'store' => null,
    'lottery' => [2, 100],
    'cookie' => 'k_session',
    'path' => '/',
    'domain' => env('SESSION_DOMAIN', null),
    'secure' => false,
    'http_only' => true,
];

storage/framework/sessions chmod是777,在每次请求后,我都看到在那里创建了文件。但是没有任何内容发送到浏览器。

我也尝试了Cookie::make(...)session(['a' => 'b']),但浏览器标题中仍然没有任何内容。那里只有cloudflare标头。

我还测试了不同的SESSION_DOMAIN。 http://example.comhttps://example.comexample.comnull,它们都不起作用。 (有些页面在http中,有些页面在https中,但没有一个页面发送cookie)

提示:我将session_start();放在了index.php文件中,可以在脚本中使用$ _SESSION []来设置会话,但是我知道laravel有自己的会话驱动程序,而不是解决方案。

1 个答案:

答案 0 :(得分:0)

我终于解决了这个很小的问题。

我将所有文件导入了我的IDE。花了很多时间,我终于在所有文件中搜索了.rdlc正则表达式。然后我在\s<\?php文件中找到一个换行符。发送标头之前,不应有任何回声。