Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
services.json无法打开流:Laravel 4中的权限被拒绝_Laravel_Laravel 4 - Fatal编程技术网

services.json无法打开流:Laravel 4中的权限被拒绝

services.json无法打开流:Laravel 4中的权限被拒绝,laravel,laravel-4,Laravel,Laravel 4,我在玩一个正在运行的Laravel4安装,并将所有内容都移动到一个子文件夹中。然后,我决定不这样做,我将其全部向后移动(全部通过命令行): 然后 cd folder mv * ../ 现在,站点抛出以下错误: file_put_contents(/var/www/quantquote/app/storage/meta/services.json): failed to open stream: Permission denied 以下是完整错误的屏幕截图: 我已尝试将/storage文件夹

我在玩一个正在运行的Laravel4安装,并将所有内容都移动到一个子文件夹中。然后,我决定不这样做,我将其全部向后移动(全部通过命令行):

然后

cd folder
mv * ../
现在,站点抛出以下错误:

file_put_contents(/var/www/quantquote/app/storage/meta/services.json): failed to open stream: Permission denied
以下是完整错误的屏幕截图:


我已尝试将/storage文件夹的权限设置为777,但没有效果。

由于问题与权限有关,请尝试重新授予app/storage及其所有子目录和文件的正确权限

您可以从Laravel应用程序的根路径键入:

chmod -Rvc 777 app/storage
如果出于某种原因,这不起作用,请尝试:

find app/storage -type d -exec chmod -vc 777 {} \;
find app/storage -type f -exec chmod -vc 777 {} \;

正如我在评论中所说:

find app/storage-type d-exec chmod 777{}

find app/storage-type f-exec chmod 777{}


这将把
app/storage
中的所有目录和文件chmod到777

切勿在递归模式下运行777。这是一个安全问题。 现在,请删除services.json文件,然后尝试以下操作:


当chmod 777或chmod 775失败时,请检查子目录是否确实存在:

app/storage/
├── cache
├── logs
├── meta
├── sessions
└── views
如果这些文件夹不存在,您必须创建它:

cd app/storage/
mkdir meta logs cache sessions views
cd ../
find storage -type d -exec chmod 775 {} \;
find storage -type f -exec chmod 664 {} \;
2016年更新laravel 5+

在默认的Laravel 5+应用程序结构中,
存储
应用程序
处于同一级别。因此,前面的命令变为:

cd storage/
mkdir meta logs cache sessions views
find . -type d -exec chmod 775 {} \;
find . -type f -exec chmod 664 {} \;

花了一整天的时间来解决这个问题,这个命令简单地解决了我的问题

如果您对Laravel应用程序文件夹的权限为777,但仍然出现此错误,则是因为您已阻止此错误。您可以使用以下命令轻松取消阻止应用程序的文件夹:

su-c“chcon-R-h-t httpd\u sys\u script\u rw\u t/usr/share/nginx/YOUR\u LARAVEL\u APP/”

就这样


顺便说一句,永远不要禁用SElinux:

如果您使用的是CentOS7,请执行以下步骤:

  • 更改应用程序/存储目录所有权

    chown apache:apache app/storage
    
  • 更改应用程序/存储权限

    chmod -R 775 app/storage
    
  • 防止SELinux阻止应用程序/存储目录

    su -c "chcon -R -h -t httpd_sys_script_rw_t [fullpath]/app/storage"
    

  • 只需在终端上键入以下内容:

    php artisan cache:clear
    

    逐个尝试以下命令:

    setenforce 0
    setsebool -P httpd_can_network_connect_db on
    


    chmod-R 0777 app/storage
    应该很好……再次尝试,但没有效果:(尝试运行
    find app/storage-type d-exec chmod 777{};
    find app/storage-type f-exec chmod 777{}\;
    @CollinHenderson就是这么做的,谢谢。你能解释一下这是怎么回事吗?这些命令将
    app/storage
    下所有目录和文件的权限更改为
    777
    。请从链接中发布相关部分,如果链接死了,那么将来的答案将不会有帮助。我会将权限设置为775读取777,并相应地配置文件所有权和组。即,web服务器的组和应用程序/存储文件夹将是相同的。作为安全预防措施,我建议
    chmod-R ug+rwX,o-rwX。
    这将只设置要执行的目录,并防止组外的人对您的文件做可怕的事情。阅读如何以正确的方式设置目录权限检查以下答案:非常感谢!我想补充一点,我的命令最后是
    chcon-R-h-t httpd\u sys\u script\u rw\u t/var/www/laravel
    ,因为我已经在本地机器上以root用户身份运行,以防其他人睡眠不足,无法正确读取内容。同样,thanks!这是用Laravel和logging解决这么多问题的答案。谢谢。节省了一天的调试时间。请,如果您要否决此答案,请提供任何解释,以便我们可以改进它。谢谢。否决:永远不要使用chmod 777!建议这样一个危险的命令作为解决方案,应该禁止使用。@exeаЙ你会推荐吗?这个答案帮助了我,我需要在存储文件夹下创建文件夹结构。但在我的情况下(对于Laravel 5.0),视图、会话和缓存文件夹必须位于名为“framework”的子文件夹中.救了我的命。--为什么没有投票支持这个?这就像一个符咒!谢谢!因为它禁用了SELinux,而不是学习如何使用它,这是一个危险的建议。此外,海报还没有真正解释这个“解决方案”在做什么。
    setenforce 0
    setsebool -P httpd_can_network_connect_db on