【发布时间】:2018-11-03 21:22:06
【问题描述】:
之前访问过这方面的主题无济于事 - 努力摆脱日志/laravel.log 上的权限错误“无法打开流”,唯一目前有效的是将目录权限设置为 777,这在实时服务器生产环境中当然是非常糟糕的做法。
我几乎遵循了每一个教程,例如这个是我最近遇到的:
还有这个
https://www.howtoforge.com/tutorial/install-laravel-on-ubuntu-for-apache/
一般来说,我执行的一些检查包括通过运行检查所有权/组
ps aux | egrep '(apache|httpd)'
返回以下结果
根 6723 0.0 0.4 77944 4880 ? SS 14:53 0:00 /usr/sbin/apache2 -k 开始 www-数据 6726 0.0 0.6 432716 6708 ? Sl 14:53 0:00 /usr/sbin/apache2 -k 开始 www-数据 6727 0.0 0.6 432772 6696 ? Sl 14:53 0:00 /usr/sbin/apache2 -k 开始 ubuntu 6874 0.0 0.0 12948 948 pts/0 S+ 15:07 0:00 grep -E --color=auto (apache|httpd)
所以我知道我的服务器归 www-data 所有 - 即使执行 sudo chgrp 更改(例如 ubuntu:www-data)也没有效果。
我在本地环境中遇到了同样的问题。在生产中,我的刀片模板实际上呈现为原始文本内容,而不是显示 Laravel 错误页面 - 假设这是因为引导程序/缓存(我也修改了权限和所有权)无法写入/部分写给。
我还注意到很多教程都提到 bootstrap/cache 位于 /storage 文件夹中,但在较新的 Laravel 版本中,这似乎已移至 /project-directory/bootstrap 而不是 /project-directory/storage/引导等。
我在 Amazon AWS 实例上运行 Ubuntu Xenial 16.04。
任何帮助将不胜感激。
【问题讨论】:
-
你能显示存储和日志目录的所有者/权限吗?
-
@aynber 当然它会输出这个:
drwxr-xr-x root root / drwxr-xr-x root root var drwxr-xr-x root root www drwxr-xr-x root root html drwxrwxr-x www-data www-data flexischedule drwxrwxr-x ubuntu www-data storage drwxrwxr-x ubuntu www-data logs我已经以所有者身份在 ubuntu 和 www-data 之间切换,但仍然没有。抱歉,cmets 中的格式不是很好 -
@logikurl 在你的项目根目录中使用这些命令你应该很高兴去
chmod -R 775 storage chmod 775 bootstrap/cache chown -R www-data ./ -
目录是组可写的,但这并不总是传递到文件夹中。它们归 ubuntu 而不是 www-data 所有,所以这可能会使事情变得有些混乱。 laracasts.com/discuss/channels/general-discussion/… 有一些扩展命令可能会有所帮助。
-
@logikurl 更多,也许你根本没有在 apache 上运行 php?暂时将您的
public/index.php内容更改为<?php phpinfo();如果它没有呈现 php 信息页面,那么您需要查看有关如何在服务器上正确安装和设置 apache 的教程...
标签: php laravel apache ubuntu permissions