ubuntu 14.04 上的 Laravel 5.1 会话问题

Posted

技术标签:

【中文标题】ubuntu 14.04 上的 Laravel 5.1 会话问题【英文标题】:Laravel 5.1 on ubuntu 14.04 Problems with session 【发布时间】:2015-11-14 15:51:35 【问题描述】:

我在 ubuntu 14.04 上的 laravel (5.1) 会话存在以下问题。每个请求都会在 storage/framework/sessions 中生成一个新的会话文件。正如您已经猜到的那样,会话驱动程序是'file','lifetime'设置为120。这似乎是某种权限错误。我已经将存储文件夹的权限设置为755(也是777),但是每个新生成的会话文件的权限都是664(rw- rw- r--)。通过谷歌,我只发现了一个与 dd(...) 相关的会话问题,但这里不是这种情况,尤其是它在 Windows 环境中运行良好。 我最初想做的是使用redirect()->intended(),它使用存储在会话中的信息。

我必须以特殊方式运行 php artisan serve 吗?

【问题讨论】:

可以显示错误信息吗? 似乎没有错误。 redirect()->intended('dashboard') 只是在会话中找不到 'url.intended' 时使用给定的后备路由: $this->session->pull('url.intended', $default);第二个症状是每次请求都会生成一个新的会话文件,因此无论如何都不会保留任何信息 这不是会话预期的行为。不过很奇怪。尝试清除缓存,然后转储自动加载。 这没有帮助。我还尝试再次“作曲安装”。 你说你设置了storage文件夹的权限,你也设置了storage所有子文件夹的权限吗? (应用程序、框架、会话...) 【参考方案1】:

自从我使用 Vagrant 和 Homestead 以来,一切都很好。运行 PHP 内置的网络服务器似乎只是一个杂项。

【讨论】:

【参考方案2】:

测试授予存储文件夹所有权限的功能

find /path/to/storage/folder -type d -exec chmod 777  \;

如果可行,则设置在大多数情况下应为的propper权限

find /path/to/storage/folder -type d -exec chmod 775  \;

这样您只更改目录而不是文件的权限。

如果问题是新创建的问题被设置为不同的所有者,您可以为其设置权限。

就像当我在本地服务器上开发时,我有我的用户和 www-data 用户,它是 Apache 的用户,所以如果 apache 创建一个新文件,所有权就会开始混乱。

find /path/to/root/of/project -type d -exec chmod g+s  \;

【讨论】:

没有帮助。文件夹权限已经很好了。我想问题是那些新生成的会话文件没有正确的权限。它们只有 664,但我不知道为什么。 好的,所以检查这些新文件的所有者和组,如果它们与文件夹的不同,那么使用我将在答案中放置的命令 文件拥有相同的所有者和组。对了,启动的laravel服务器的进程属主是一样的。

以上是关于ubuntu 14.04 上的 Laravel 5.1 会话问题的主要内容,如果未能解决你的问题,请参考以下文章

PHP 7.0 上的 Laravel 5.4:PDO 异常 - 找不到驱动程序 (MySQL)

ubuntu 14.04 上的 Csharp 错误

在 laravel @Apache2 Server Ubuntu 14.04 LTS 中将 Root 设置为公用文件夹

npm 全局安装后如何在 Virtual Box Ubuntu 14.04 中修复 $PATH

如何在 ubuntu 14.04 lts 中为 lampp 安装 mcrypt

Ubuntu 14.04 FTP服务器--vsftpd的安装和配置