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)
在 laravel @Apache2 Server Ubuntu 14.04 LTS 中将 Root 设置为公用文件夹
npm 全局安装后如何在 Virtual Box Ubuntu 14.04 中修复 $PATH