storage/meta/services.json 中的 Laravel 权限被拒绝

Posted

技术标签:

【中文标题】storage/meta/services.json 中的 Laravel 权限被拒绝【英文标题】:Laravel permission denied in storage/meta/services.json 【发布时间】:2014-06-27 13:45:37 【问题描述】:

嗯,这个错误是众所周知的,但就我而言,我无法减轻它的影响。我已将 laravel-4 安装迁移到另一台服务器,第一次访问时出现此错误:

file_put_contents(/var/www/html/MyApp/app/storage/meta/services.json):无法打开流:权限被拒绝

我关注了以下不同的谷歌搜索结果

https://***.com/a/17971549/1424329 Can't make Laravel 4 to work on localhost http://laravel.io/forum/05-08-2014-failed-to-open-stream-permission-denied Laravel 4: Failed to open stream: Permission denied

但是,其中任何一个都无法解决我的问题。我还尝试清理缓存并转储 autoclass 命令:

php artisan cache:clear
chmod -R 777 app/storage
composer dump-autoload

另外,我认为问题可能是网络服务器进程,所以我这样寻找它的用户:

$ ps -ef|grep httpd

apache   11978 11976  0 11:14 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND

然后,我将apache 添加到目录组所有者,问题仍然存在。

我不知道还能做什么,我要疯了,因为在满月下裸舞并不能解决问题。

【问题讨论】:

这听起来很烦人。您是否也尝试过php artisan dump-autoload,而不仅仅是composer dump-autoload 在我绝望的时刻,我更改了本机操作系统配置文件,此时系统无法启动..(我从手机发布) 哦,该死的......祝你好运。 :// @JoelHinz,自从我关注this bad idea 后我回来了。回滚并继续这个 laravel 问题。 【参考方案1】:

有时会发生在我身上,但我只是将其删除,然后 Laravel 会重新创建它。据我所知,这只是服务的缓存列表,可以安全删除。

【讨论】:

让我试试这个,它有感觉。【参考方案2】:

我已经找到了这个问题的原因。看起来selinux 不允许在我的应用程序文件夹中写入 httpd 服务(apache Web 服务器)。所以,我做到了:

setsebool -P httpd_unified 1 

现在一切正常!

【讨论】:

耶!很高兴你发现了问题! :) 该喝啤酒了 @Moak,我不是 Linux 专家。就我而言,我的环境是一个 Fedora 20 linux 发行版,它带有一个名为“selinux”的安全应用程序/恶魔。所以,上面的命令是这样说的:“请 selinux,让 apache 网络服务器在我的应用程序文件夹中写入内容”

以上是关于storage/meta/services.json 中的 Laravel 权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章