【问题标题】:Cookies are not set in Laravel 5.3Laravel 5.3 中未设置 Cookie
【发布时间】:2019-11-22 06:32:06
【问题描述】:

我在由 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' =&gt; 'b']),但在浏览器标题中仍然一无所获。那里只有 cloudflare 标头。

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

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

【问题讨论】:

  • 你能展示你的路线定义吗?
  • @Jerodev 它太大了,但出于测试目的,我制作了Route::get('test', function(){return 1;});。它没有网络中间件,但网络中间件通过RouteServiceProvider.php 附加到所有web.php 路由

标签: php laravel cookies session-cookies setcookie


【解决方案1】:

我终于解决了导致它的这个非常小的问题。

我将所有文件导入到我的 IDE。花了很多时间,我终于在所有文件中搜索了\s&lt;\?php regex。然后我在config/app.php 文件中发现了一个换行符。在发送标头之前不应有任何回显。

【讨论】:

    猜你喜欢
    • 2021-10-21
    • 2017-06-26
    • 1970-01-01
    • 2014-09-04
    • 2014-04-20
    • 2017-03-07
    • 2017-03-13
    • 2018-03-13
    • 2020-03-01
    相关资源
    最近更新 更多