我在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.com
,https://example.com
,example.com
,null
,它们都不起作用。 (有些页面在http中,有些页面在https中,但没有一个页面发送cookie)
提示:我将session_start();
放在了index.php文件中,可以在脚本中使用$ _SESSION []来设置会话,但是我知道laravel有自己的会话驱动程序,而不是解决方案。
答案 0 :(得分:0)
我终于解决了这个很小的问题。
我将所有文件导入了我的IDE。花了很多时间,我终于在所有文件中搜索了.rdlc
正则表达式。然后我在\s<\?php
文件中找到一个换行符。发送标头之前,不应有任何回声。