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

Bry*_*n P 35 laravel laravel-4

我在设置Laravel 4时遇到问题.打开索引页面时出现此错误:

file_put_contents(/Users/laravel/app/storage/meta/services.json)[function.file-put-contents]:
无法打开流:权限被拒绝.

我在这里错过了什么?

Fra*_*ois 52

我认为chmod -777是一种不好的做法.

要解决Laravel上的权限问题,我已经完成了这个(使用root用户):

cd app/

chown -R www-data:www-data storage

cd storage/

find . -type d -exec chmod 775 {} \; && find . -type f -exec chmod 664 {} \;

并始终在app/storage目录中:

chown your_user:user_group .gitignore cache/.gitignore logs/.gitignore meta/.gitignore sessions/.gitignore views/.gitignore

现在,退出root用户,没关系.

编辑:这是为Laravel4.由于结构不同,这对Laravel5不起作用.


Fra*_*anz 46

storage目录需要由webserver用户写入.

  • `chmod -R 755 app/storage`为我而不是'644`工作. (8认同)
  • 我必须先做777.然后我恢复到755并且它起作用了.我无法让644工作. (8认同)
  • 我怎么做?这是chmod吗? (5认同)
  • 我想,`chmod -R 644 app/storage`应该可以解决问题. (4认同)

小智 14

最好不要更改权限,你应该只使用更改owner:group存储文件夹owner:group的apache chown,这更复杂但更安全,你很快就会习惯,你可以找到这个在httpd.conf中

MAMP:

/Applications/MAMP/conf/apache/httpd.conf
Run Code Online (Sandbox Code Playgroud)

XAMMP:

/Applications/XAMPP/xamppfiles/etc/httpd.conf
Run Code Online (Sandbox Code Playgroud)

使用首选编辑器打开httpd.conf,然后搜索User/Group.搜索后,您会看到下面这些突出显示的行:

User someuser
Group somegroup
Run Code Online (Sandbox Code Playgroud)

一旦你已经知道用户和组,然后cd到你的laravel目录,执行chown:

chown -R someuser:somegroup app/storage
Run Code Online (Sandbox Code Playgroud)

PS:如果您在获得许可时遇到错误chown,请尝试以下方法:

sudo chown -R someuser:somegroup app/storage
Run Code Online (Sandbox Code Playgroud)

然后它会询问您的密码,然后输入它然后完成.


小智 5

刚刚在centos 7上遇到了这个问题.阻止程序不是文件夹权限,而是selinux策略阻止nginx/php访问/ var/www.因此,如果上述方法不起作用,请尝试禁用selinux作为测试,看看是否可以在没有任何权限问题的情况下重新运行composer.

  • 这花了我差不多整整一天才弄明白.[这里有关于该程序的更多信息的链接](http://www.crypt.gen.nz/selinux/disable_selinux.html)以及如何禁用它.为了快速参考,命令是:`setenforce 0` (4认同)
  • 你不应该禁用selinux.您可以在此处解决您的问题:http://stackoverflow.com/a/27377624/2570054 (3认同)