我正在玩一个正在运行的Laravel 4安装并将所有内容移动到子文件夹中。然后我决定不这样做,我把它全部移回(全部通过命令行):
mv * /folder
然后
cd folder
mv * ../
现在,该网站引发了以下错误:
file_put_contents(/var/www/quantquote/app/storage/meta/services.json): failed to open stream: Permission denied
以下是完整错误的屏幕截图:
http://i.imgur.com/8deGG97.png
我已经尝试将/ storage文件夹的权限设置为777无效。
答案 0 :(得分:29)
花了一整天来解决这个问题,这个命令解决了我的问题。
如果Laravel App文件夹的权限为777,但仍然出现此错误,那是因为SEliux已将其阻止。您可以使用以下命令轻松取消阻止应用程序的文件夹:
su -c "chcon -R -h -t httpd_sys_script_rw_t /usr/share/nginx/YOUR_LARAVEL_APP/"
就是这样!
BTW永远不会禁用SElinux:http://stopdisablingselinux.com/
答案 1 :(得分:23)
正如我在评论中所述:
find app/storage -type d -exec chmod 777 {} \;
find app/storage -type f -exec chmod 777 {} \;
这将chmod app/storage
到777的所有目录和文件。
答案 2 :(得分:11)
由于问题与权限相关,请尝试重新授予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 {} \;
答案 3 :(得分:7)
当chmod 777或chmod 775失败时,检查子目录是否确实存在:
app/storage/
├── cache
├── logs
├── meta
├── sessions
└── views
如果这些文件夹不存在,您必须创建它:
cd app/storage/
mkdir meta logs cache sessions views
cd ../../
chmod -R 777 app/storage
2016年更新
在默认的Laravel 5应用程序结构中,storage
与app
处于同一级别。所以上一个命令变为:
cd storage/
mkdir meta logs cache sessions views
cd ../
chmod -R 777 storage
答案 4 :(得分:7)
如果您使用的是CentOS7,请执行以下步骤:
更改应用/存储目录所有权
chown apache:apache app/storage
更改应用/存储空间
chmod -R 775 app/storage
阻止SELinux阻止app / storage目录
su -c "chcon -R -h -t httpd_sys_script_rw_t [fullpath]/app/storage"
答案 5 :(得分:6)
只需在终端上输入:
php artisan cache:clear
答案 6 :(得分:5)
永远不要以递归模式运行777。这是一个安全问题。 现在,删除services.json文件,并尝试:
答案 7 :(得分:1)
逐个尝试这些命令:
setenforce 0
setsebool -P httpd_can_network_connect_db on