提问者:小点点

Laravel 5.6-在logs/Laravel.log ubuntu xenial 16.04上拒绝权限


我以前曾访问过有关这方面的主题,但无济于事--努力消除logs/laravel.log上的权限错误“Failed to open Stream”,目前唯一有效的做法是将目录权限设置为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(我还修改了它的权限和所有权)无法写入/部分写入。

我还注意到,很多教程都提到bootstrap/cache位于/storage文件夹中,但在较新的Laravel版本中,这似乎已经移到/project-directory/bootstrap,而不是/project-directory/storage/bootstrap等。

我正在Amazon AWS实例上运行Ubuntu Xenial16.04。

如有任何帮助,我们将不胜感激。


共1个答案

匿名用户

所以就像@Bart引导我想出来的那样。这里的问题是两件事的混合体。第一个确实是权限错误,这个错误似乎已经被chmod修复为chgrpwww-data之后的755或775,整个项目目录被修复为chmodwww-data

其次,由于某些错误的配置,在从最初的lamp-server安装中删除apache之后,我不得不重新安装apache.由于某些原因,这导致我的PHP在我的服务器上被禁用,apache的PHP文件(我发现它们被称为PHP.mod和PHP.load)丢失了。要么是因为这个原因,要么是因为最初的切换和升级到7.2禁用了我的PHP(这似乎是一个有文档记录的Ubuntu bug,请参阅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,因为它不再被维护,而且他们正在逐步淘汰mcrypt,以便向libs钠过渡,但我相信它仍然有一些依赖性。我使用PHP-PEAR通过pecl安装了这个。

有一吨的其他错误的东西,我不可能记录下来,我强烈建议任何人阅读这篇文章,遵循一个良好的指南,根据您的操作系统,并尝试不要返回/修改您的初始核心灯/WAMP/MAMP等设置太像我做的(我认为手动删除apache2通过清除然后重新安装触发服务器端问题开始)。

一旦我的PHP被启用,文本就不再是原始输出,权限更改肯定已经起作用了,就像我现在看到的Laravel默认欢迎页面一样。

同样,在“裸”服务器上的任何新安装上--请仔细检查您正在使用的服务器系统是否启用了PHP,以及PHP重写,mbstring,dev和CLI MODS。