我以前曾访问过有关这方面的主题,但无济于事--努力消除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。
如有任何帮助,我们将不胜感激。
所以就像@Bart引导我想出来的那样。这里的问题是两件事的混合体。第一个确实是权限错误,这个错误似乎已经被chmod
修复为chgrp
到www-data
之后的755或775,整个项目目录被修复为chmod
到www-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-enabled
或mods-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。