正确的laravel存储权限

时间:2015-12-09 09:47:06

标签: laravel laravel-5.1

我已将我的本地laravel 5存储文件夹设置为权限755和用户www-data,因为我在我的计算机上使用apache2。但是我得到了空白屏幕而不是错误的堆栈跟踪,因此我将权限更改为777,从而解决了问题。

但是我觉得这是一个(可怕的)bandaid,因为它允许任何用户使用所有权限而不是具有有限权限的正确用户修改此目录。我不知道这个问题是否会影响开发或生产服务器,但在这种情况下授予这些权限不是一种选择。

如何找出哪个用户(或组)实际上需要使用此目录进行laravel日志记录的权限,以便我可以将目录分配给它们并将权限返回到755?

我试过了

ps aux | egrep '(apache|httpd)'

但它表明大多数进程都以www-data ...

运行

2 个答案:

答案 0 :(得分:4)

您使用ps aux | egrep '(apache|httpd)'开启了正确的轨道。

过程

Apache / httpd以用户root启动,但随后它产生进程来处理用户在其配置中定义的传入请求。该默认用户通常是www-dataapache

服务器操作系统

CentOS / RedHat 服务器上,您可能会看到进程以用户/组apache运行(这是默认设置)。

Debian / Ubuntu 上,处理请求的流程的默认用户设置为www-data

这一切都假设apache正在使用mod-php 。如果您正在使用php-fpm,则可以单独配置运行PHP的用法(尽管根据我的经验,它具有与apache相同的默认值)。

storage

的权限

听起来你知道,storage目录需要由运行这些进程的用户或组(取决于权限)写入。

WWW的数据?

听起来ps aux | egrep '(apache|httpd)'的结果是www-data,所以很可能,但不是100%确定,目录需要由用户/组www-data写入(通过将其设置为所有者并确保所有者拥有这些权限,或通过组权限进行设置,或使其成为世界可写的。)

快速测试

一种简单的方法是从storage目录中删除日志文件/视图缓存文件,然后使该目录成为可写的。

在Laravel中发出一些会重新生成这些文件的请求,然后查看在新文件上设置的用户/组。

这是查看运行PHP的进程的用户/组设置的一种方法。

答案 1 :(得分:1)

storage中的文件夹是否也设为755?

如果没有,您应该通过执行chmod -R 755 storage递归更改权限。使用chmod -R时要小心,因为您可能错误地将整个服务器设置为755。