Laravel 5.6 - 对logs / laravel.log ubuntu xenial 16.04的权限被拒绝

时间:2018-05-24 15:19:19

标签: php laravel apache ubuntu permissions

之前访问过的主题无济于事 - 努力摆脱日志/ laravel.log上的权限错误“无法打开流”,此时唯一的事情是将目录权限设置为777,当然在实时服务器生产环境中是非常糟糕的做法。

我几乎遵循了每个教程,例如这个是我遇到过的最新教程:

https://vijayasankarn.wordpress.com/2017/02/04/securely-setting-file-permissions-for-laravel-framework/

和这个

https://www.howtoforge.com/tutorial/install-laravel-on-ubuntu-for-apache/

一般来说,我执行的一些检查包括通过运行

检查所有权/组
ps aux | egrep '(apache|httpd)'

返回以下结果

root      6723  0.0  0.4  77944  4880 ?        Ss   14:53   0:00 /usr/sbin/apache2 -k start
www-data  6726  0.0  0.6 432716  6708 ?        Sl   14:53   0:00 /usr/sbin/apache2 -k start
www-data  6727  0.0  0.6 432772  6696 ?        Sl   14:53   0:00 /usr/sbin/apache2 -k start
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 / bootstrap等。

我在Amazon AWS实例上运行Ubuntu Xenial 16.04。

任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

因为@Bart让我弄明白了。这里的问题是两件事的混合。首先确实是权限错误,在chmodchgrp之后,www-data整个项目目录似乎已经修复为755或775 - 请参阅原始问题中的评论以获取相关指导。

第二,由于一些糟糕的配置导致我从原来的灯 - 服务器安装中删除它后必须重新安装apache的事实,这由于某种原因导致我的PHP在我的服务器和php上被禁用apache的文件(我发现它被称为php.mod和php.load)已经丢失了。它是这个或初始切换并升级到7.2禁用我的PHP(这似乎是一个记录的Ubuntu错误,在这里引用https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=893481)。

Apache没有提及其中mods-enabledmods-available个文件夹中的任何PHP文件。所以我按照这里的指南来启动并运行,但更改了变量以匹配我当前的PHP版本7.2,并将其指向libphp7.2.so

https://digitizor.com/how-to-fix-module-php5-does-not-exist-error-in-apache-linux/

我的配置也遇到了一些与mcrypt相关的错误,这主要是因为7.2不再支持mcrypt,因为它不再被维护,并且他们正逐步淘汰它以向libsodium迈进,但是我相信仍然有一些依赖。我通过pecl使用php-pear安装了这个。

有很多其他的东西都是我无法记录的错误,我强烈建议任何人阅读本文,按照你的操作系统遵循一个好的指南,尽量不要回头/修改你的初始核心LAMP / WAMP / MAMP等设置太像我一样(我认为通过purge手动删除apache2然后重新安装会触发服务器端问题开始)。

启用PHP后,文本不再输出raw,权限更改必须有效,因为我现在看到Laravel默认欢迎页面。

也适用于"裸体"的任何新安装。服务器 - 请仔细检查您使用的服务器系统是否启用了PHP,以及PHP重写,mbstring,dev和CLI mod。