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

Laravel 4:无法打开流:权限被拒绝,laravel,laravel-4,Laravel,Laravel 4,我在设置Laravel 4时遇到问题。打开索引页时出现以下错误: 文件put内容(/Users/laravel/app/storage/meta/services.json)[function.file put contents]:无法打开流:权限被拒绝 我这里缺少什么?Web服务器用户需要可以写入存储目录。最好不要更改权限,您只需使用chown将存储文件夹的所有者:组更改为apache的所有者:组,这更复杂,但更安全,您很快就会习惯的,您可以在httpd.conf中找到它 sudo chgrp

我在设置Laravel 4时遇到问题。打开索引页时出现以下错误:

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


我这里缺少什么?

Web服务器用户需要可以写入
存储
目录。

最好不要更改权限,您只需使用
chown
将存储文件夹的
所有者:组
更改为apache的
所有者:组
,这更复杂,但更安全,您很快就会习惯的,您可以在httpd.conf中找到它

sudo chgrp -R www-data storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache
MAMP:

/Applications/MAMP/conf/apache/httpd.conf
/Applications/XAMPP/xamppfiles/etc/httpd.conf
XAMMP:

/Applications/MAMP/conf/apache/httpd.conf
/Applications/XAMPP/xamppfiles/etc/httpd.conf
使用首选编辑器打开httpd.conf,然后搜索
User/Group
。搜索后,您将在突出显示的搜索行下方看到这些行:

User someuser
Group somegroup
一旦您已经了解了用户和组,请将cd刻录到您的laravel目录,然后执行
chown

chown -R someuser:somegroup app/storage
附言: 如果您在执行
chown
操作时获得了某些错误,请尝试以下操作:

sudo chown -R someuser:somegroup app/storage

然后它会询问您的密码,所以请输入密码,然后完成。

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

为了解决Laravel上的权限问题,我(使用root用户)完成了以下操作:

cd-app/

chown-R www数据:www数据存储

cd存储/

find-类型d-execchmod775{}\;&&找到-f型-exec chmod 664{}\

并且始终在应用程序/存储目录中:

chown您的用户:用户组.gitignore缓存/.gitignore日志/.gitignore元/.gitignore会话/.gitignore视图/.gitignore

现在,退出root用户,就可以了


编辑:这是给Laravel4的。由于结构不同,这对Laravel5不起作用。

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

在我的示例中,引发了以下错误:

福彭(php://stdout):无法打开流:操作失败

我正在Wamp中使用虚拟主机。 因此,我在
httpd vhosts.conf
文件中的
->
块中添加了这一行:

Require all granted
我的街区是:

<VirtualHost *:80>
    ServerName laravel
    DocumentRoot d:/wamp/www
    <Directory  "d:/wamp/www/">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

服务器名拉威尔
DocumentRoot d:/wamp/www
选项索引跟随符号链接多视图
允许超越所有
要求所有授权

然后问题解决了

如果您在Ubuntu上使用Apache,存储和引导/缓存文件夹需要可由web服务器用户写入

sudo chgrp -R www-data storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache

这将允许web服务器用户对这些文件夹拥有写入权限。

如何操作?那会是chmod吗?我必须先做777。然后我又恢复到755,它成功了。我无法让644正常工作。而bootstrap dir,对我来说,谢谢,这很有帮助。只是想了解更多信息,在OSX 10.9中,apache(OSX附带的apache)的默认用户和组是www和www所以我做了chown-R www:_wwwstorage/+1对Laravel 5的唯一更改是你不首先做
cd-app
,最后一个命令应该是
chown-vagrant:www-data.gitinore-framework/cache/.gitinore-logs/.gitinore-app/.gitinore-framework/sessions/.gitinore-framework/views/.gitinore
,使用
chmod
比使用
find
更容易:
chmod-R ug=rwX,o=R app/storage
这几乎花了我一整天的时间才弄明白。以及如何禁用它。为便于快速参考,命令为:
setEnforce0
您不应禁用selinux。您可以在这里解决您的问题:在Debian7中,您应该更改/etc/apache2/envvars中的用户/组,然后更改/var/lock/apache2的所有权。我想在其他基于debian的linux中也应该类似。