Php 为什么我的曲奇饼在拉拉维尔(使用宅地、流浪者)不持久?

Php 为什么我的曲奇饼在拉拉维尔(使用宅地、流浪者)不持久?,php,laravel,cookies,vagrant,homestead,Php,Laravel,Cookies,Vagrant,Homestead,我一直在Windows 10的命令提示符下使用Laravel,但是在项目之间切换的困难使我转而使用Homestead。然而,在我在那里开始的一个新项目中,我无法让cookies持续下去。 以下是我当前的代码(仅用于调试此问题): 预期输出:在连续加载页面时,访问者将看到与最初打开页面时相同的unix时间戳(我理解这不是一种很好的处理方法,同样,这只是为了重现错误。) 现实:每个页面加载都会产生不同的时间戳 我查阅了尽可能多的讨论。我尝试过的解决方案: 使用声明cookie的路由方法 使用好的旧

我一直在Windows 10的命令提示符下使用Laravel,但是在项目之间切换的困难使我转而使用Homestead。然而,在我在那里开始的一个新项目中,我无法让cookies持续下去。 以下是我当前的代码(仅用于调试此问题):

预期输出:在连续加载页面时,访问者将看到与最初打开页面时相同的unix时间戳(我理解这不是一种很好的处理方法,同样,这只是为了重现错误。)

现实:每个页面加载都会产生不同的时间戳

我查阅了尽可能多的讨论。我尝试过的解决方案:

  • 使用声明cookie的路由方法
  • 使用好的旧PHP setcookie
  • 使用Cookie:make和Cookie:forever
  • 在加密Cookie中的异常中添加“customer_id”
  • 在web中间件中放置路由
  • 擦除php artisan缓存,重新启动vagrant
  • 通过chmod使会话文件夹可编辑
然而,在应用了以上所有内容之后,cookie在每次页面加载之后仍然会消失


因为我之前没有通过Xampp的PHP遇到过类似的问题,所以我不得不假设Vagrant有一个(希望是)我还不知道的琐碎而明显的问题。任何建议都将不胜感激

排队的cookie仅随响应一起发送,因此请确保控制器函数确实返回响应

使用light\Support\Facades\Cookie;
// ......
公共函数构造(请求$Request){
$customer_id=Cookie::get('customer_id');
如果(!$customer\u id){
Cookie::queue('customer_id',time(),3600);
}
}
公共功能foo(){
...
返回响应(“某些文本”);
}

此外,如果使用某种api,则必须添加中间件以在响应中包含cookie。请参见

您在哪个类中使用此功能?@Jonathan它位于我通过php artisan创建的自定义控制器中。基本上没什么特别的。你到底想用饼干做什么?您需要进一步访问什么(当然应该是什么)
$customerId=Cookie::get('customer_id')?@Jonathan你说得对,我附加的代码很不可靠,我更新了它。在我的辩护中,这只是我创建的一个快速复制的示例,现在已经是第20次迭代了,这让我认为这是正确设置Homestead服务器的一个问题。-其基本思想是:当新客户打开页面时,他们会在cookie中被分配一个唯一的id,通过该id,他们可以继续填写相同的多页问卷,即使他们关闭浏览器并稍后返回。哇,我不敢相信这是如此简单,但现在它起作用了。。。整个下午我都在思考这个问题!谢谢你,丹尼尔!因此,如果我理解正确的话,最后我的问题是我从来没有离开过构造函数,总是dd-d或者带着一些东西离开。现在我觉得自己很笨。再次感谢!
use Illuminate\Support\Facades\Cookie;

// ......

public function __construct(Request $request) {
    $customer_id = Cookie::get('customer_id');
    if(!$customer_id) {
        Cookie::queue('customer_id', time(), 3600);
    }
    dd($customer_id);
}