之前访问过的主题无济于事 - 努力摆脱日志/ laravel.log上的权限错误“无法打开流”,此时唯一的事情是将目录权限设置为777,当然在实时服务器生产环境中是非常糟糕的做法。
我几乎遵循了每个教程,例如这个是我遇到过的最新教程:
和这个
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。
任何帮助都会非常感激。
答案 0 :(得分:0)
因为@Bart让我弄明白了。这里的问题是两件事的混合。首先确实是权限错误,在chmod
到chgrp
之后,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-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,因为它不再被维护,并且他们正逐步淘汰它以向libsodium迈进,但是我相信仍然有一些依赖。我通过pecl使用php-pear安装了这个。
有很多其他的东西都是我无法记录的错误,我强烈建议任何人阅读本文,按照你的操作系统遵循一个好的指南,尽量不要回头/修改你的初始核心LAMP / WAMP / MAMP等设置太像我一样(我认为通过purge手动删除apache2然后重新安装会触发服务器端问题开始)。
启用PHP后,文本不再输出raw,权限更改必须有效,因为我现在看到Laravel默认欢迎页面。
也适用于"裸体"的任何新安装。服务器 - 请仔细检查您使用的服务器系统是否启用了PHP,以及PHP重写,mbstring,dev和CLI mod。