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

时间:2013-06-10 09:17:58

标签: laravel laravel-4

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

  

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

我在这里缺少什么?

6 个答案:

答案 0 :(得分: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不起作用。

答案 1 :(得分:46)

storage目录需要由网络服务器用户写入。

答案 2 :(得分:14)

最好不要更改权限,只需使用owner:group将存储文件夹的owner:group更改为apache chown的{​​{1}},这就更复杂了但是更安全,你很快就会习惯,你可以在 httpd.conf

中找到

<强> MAMP:

/Applications/MAMP/conf/apache/httpd.conf

<强> XAMMP:

/Applications/XAMPP/xamppfiles/etc/httpd.conf

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

User someuser
Group somegroup

一旦你已经知道用户和组,然后cd到你的laravel目录,那就做chown

chown -R someuser:somegroup app/storage

P.S: 如果您在执行chown时获得了权限错误,请尝试以下操作:

sudo chown -R someuser:somegroup app/storage

然后它会询问您的密码,然后输入它。

答案 3 :(得分:5)

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

答案 4 :(得分:0)

在我的情况下,抛出了这个错误:

  

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

我在Wamp中使用虚拟主机。 因此我将此行添加到我的<VirtualHost> - &gt; <Directory>文件中的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>
然后问题解决了!

答案 5 :(得分:0)

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

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

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