首页 > 解决方案 > Laravel 5.6 - 在日志/laravel.log ubuntu xenial 16.04 上的权限被拒绝

问题描述

之前访问过这方面的主题无济于事 - 努力摆脱日志/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)'

返回以下结果

根 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/bootstrap 等。

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

任何帮助将不胜感激。

标签: phplaravelapacheubuntupermissions

解决方案


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

其次,由于一些错误的配置,在从我原来的灯服务器安装中删除它后,我不得不在某个时候重新安装 apache,这出于某种原因,导致我的 PHP 在我的服务器上被禁用,并且 apache 的 php 文件(我发现它们被称为 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 相关的错误,主要是因为 mcrypt 在 7.2 上不再受支持,因为它不再维护,他们正在逐步淘汰它以向 libsodium 迈进,但仍然存在一些依赖关系我相信。我使用 php-pear 通过 pecl 安装了这个。

还有很多我无法记录的错误内容,我强烈建议任何阅读本文的人,根据您的操作系统遵循良好的指南,并尽量不要返回/修改您的初始核心 LAMP/WAMP/ MAMP 等设置太像我所做的(我认为通过清除手动删除 apache2 然后重新安装会触发服务器端问题开始)。

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

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


推荐阅读