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

Jas*_*man 24 laravel laravel-4

我正在玩一个正在运行的Laravel 4安装并将所有内容都移到子文件夹中.然后我决定不这样做,我把它全部移回(全部通过命令行):

mv * /folder
Run Code Online (Sandbox Code Playgroud)

然后

cd folder
mv * ../
Run Code Online (Sandbox Code Playgroud)

现在,该网站抛出以下错误:

file_put_contents(/var/www/quantquote/app/storage/meta/services.json): failed to open stream: Permission denied
Run Code Online (Sandbox Code Playgroud)

以下是完整错误的屏幕截图:

http://i.imgur.com/8deGG97.png

我已经尝试将/ storage文件夹的权限设置为777无效.

Sky*_*Sky 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/


Col*_*son 23

正如我在评论中所述:

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

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

这将chmod所有目录和文件app/storage到777.

  • 我将权限设置为775而不是777,并相应地配置文件所有权和组.即,Web服务器和app/storage文件夹的组将是相同的. (5认同)
  • 作为安全预防措施,我建议使用`chmod -R ug + rwX,o-rwx .`这将只设置目录执行,并防止组外的人对你的文件做出可怕的事情. (4认同)

Rub*_*zzo 11

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

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

chmod -Rvc 777 app/storage
Run Code Online (Sandbox Code Playgroud)

如果由于某种原因这不起作用,请尝试:

find app/storage -type d -exec chmod -vc 777 {} \;
find app/storage -type f -exec chmod -vc 777 {} \;
Run Code Online (Sandbox Code Playgroud)


Igo*_*rra 7

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

app/storage/
??? cache
??? logs
??? meta
??? sessions
??? views
Run Code Online (Sandbox Code Playgroud)

如果这些文件夹不存在,您必须创建它:

cd app/storage/
mkdir meta logs cache sessions views
cd ../../
chmod -R 777 app/storage
Run Code Online (Sandbox Code Playgroud)

2016年更新

在默认的Laravel 5应用程序结构中,storage与...相同app.所以前一个命令变为:

cd storage/
mkdir meta logs cache sessions views
cd ../
chmod -R 777 storage
Run Code Online (Sandbox Code Playgroud)

https://laravel.com/docs/5.0/structure


Eri*_*mez 7

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

  1. 更改应用/存储目录所有权

    chown apache:apache app/storage
    
    Run Code Online (Sandbox Code Playgroud)
  2. 更改应用/存储权限

    chmod -R 775 app/storage
    
    Run Code Online (Sandbox Code Playgroud)
  3. 防止SELinux阻止app/storage目录

    su -c "chcon -R -h -t httpd_sys_script_rw_t [fullpath]/app/storage"
    
    Run Code Online (Sandbox Code Playgroud)


小智 6

只需在终端上输入:

php artisan cache:clear
Run Code Online (Sandbox Code Playgroud)


Fra*_*ois 5

永远不要以递归模式运行777.这是一个安全问题.现在,删除services.json文件,并尝试以下操作:

Laravel 4:无法打开流:权限被拒绝

  • 请从链接发布相关部分,如果链接死亡,那么答案将来没有用. (3认同)