我已将我的本地laravel 5存储文件夹设置为权限755
和用户www-data
,因为我在我的计算机上使用apache2
。但是我得到了空白屏幕而不是错误的堆栈跟踪,因此我将权限更改为777
,从而解决了问题。
但是我觉得这是一个(可怕的)bandaid,因为它允许任何用户使用所有权限而不是具有有限权限的正确用户修改此目录。我不知道这个问题是否会影响开发或生产服务器,但在这种情况下授予这些权限不是一种选择。
如何找出哪个用户(或组)实际上需要使用此目录进行laravel日志记录的权限,以便我可以将目录分配给它们并将权限返回到755?
我试过了
ps aux | egrep '(apache|httpd)'
但它表明大多数进程都以www-data
...
答案 0 :(得分:4)
您使用ps aux | egrep '(apache|httpd)'
开启了正确的轨道。
Apache / httpd以用户root
启动,但随后它产生进程来处理用户在其配置中定义的传入请求。该默认用户通常是www-data
或apache
。
在 CentOS / RedHat 服务器上,您可能会看到进程以用户/组apache
运行(这是默认设置)。
在 Debian / Ubuntu 上,处理请求的流程的默认用户设置为www-data
。
这一切都假设apache正在使用mod-php 。如果您正在使用php-fpm
,则可以单独配置运行PHP的用法(尽管根据我的经验,它具有与apache相同的默认值)。
storage
听起来你知道,storage
目录需要由运行这些进程的用户或组(取决于权限)写入。
听起来ps aux | egrep '(apache|httpd)'
的结果是www-data
,所以很可能,但不是100%确定,目录需要由用户/组www-data
写入(通过将其设置为所有者并确保所有者拥有这些权限,或通过组权限进行设置,或使其成为世界可写的。)
一种简单的方法是从storage
目录中删除日志文件/视图缓存文件,然后使该目录成为可写的。
在Laravel中发出一些会重新生成这些文件的请求,然后查看在新文件上设置的用户/组。
这是查看运行PHP的进程的用户/组设置的一种方法。
答案 1 :(得分:1)
storage
中的文件夹是否也设为755?
如果没有,您应该通过执行chmod -R 755 storage
递归更改权限。使用chmod -R
时要小心,因为您可能错误地将整个服务器设置为755。