Laravel 5.1在Ubuntu 14.04上会话出现问题

5
在ubuntu 14.04上,我使用laravel (5.1)时遇到了以下问题:每次请求都会生成一个新的session文件在storage/framework/sessions目录下。你已经猜到了,session驱动程序是'file','lifetime'设置为120。这似乎是某种权限错误。我将storage文件夹的权限设置为755(也尝试过777),但每个新生成的session文件的权限都是664(rw- rw- r--)。通过谷歌搜索,我只找到与dd(...)相关的session问题,但这里并不是这种情况,特别是它在windows环境下运行良好。
我最初想做的是使用redirect()->intended(),它使用存储在session中的信息。
我需要以某种特殊的方式运行php artisan serve吗?

你能展示一下错误信息吗? - mdamia
看起来没有错误。当redirect()->intended('dashboard')在会话中找不到'url.intended'时,它只是使用给定的回退路由:$this->session->pull('url.intended', $default); 第二个症状是,在每个请求上生成一个新的会话文件,因此无法保留任何信息。 - epic_antihero
这不是预期的会话行为。虽然奇怪。尝试清除缓存,然后转储自动加载。 - mdamia
那没什么用。我还尝试再次运行“composer install”。 - epic_antihero
你说过你设置了存储文件夹的权限,但是你是否也设置了所有子文件夹(应用程序、框架、会话等)的权限? - dnetix
是的,我用递归做了那个。 - epic_antihero
2个回答

1
自从我使用Vagrant和Homestead以后,一切都很好。运行PHP内置的Web服务器似乎只是一个临时解决方案。

0

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

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

如果它能正常工作,那么设置适当的权限,在大多数情况下应该是这样的。
find /path/to/storage/folder -type d -exec chmod 775 {} \;

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

如果问题在于新创建的文件拥有不同的所有者,你可以为其设置权限。

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

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

没有帮助。文件夹权限已经很好了。我猜问题在于那些新生成的会话文件没有正确的权限。它们只有664,但我不知道为什么。 - epic_antihero
好的,检查这些新文件的所有者和组,如果它们与文件夹的所有者和组不同,则使用我在答案中提供的命令。 - dnetix
这些文件的所有者和组相同。顺便说一下,启动Laravel服务器的进程所有者也是相同的。 - epic_antihero

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接