36

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

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

我在这里想念什么?

4

6 回答 6

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用户,就OK了。

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

于 2014-03-05T08:55:13.013 回答
46

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

于 2013-06-10T09:22:05.627 回答
15

最好不要改权限,直接owner:group把 storage 文件夹改成owner:groupapache 就行了chown,这个比较复杂但是比较安全,很快就习惯了在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

PS:如果您在执行操作时获得许可chown,请尝试以下操作:

sudo chown -R someuser:somegroup app/storage

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

于 2013-11-04T04:00:57.400 回答
5

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

于 2014-10-08T19:59:42.633 回答
1

如果您在 Ubuntu 上使用 Apache,则 storage 和 bootstrap/cache 文件夹需要可由 Web 服务器用户写入。

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

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

于 2017-03-04T06:21:18.750 回答
0

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

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

我在 Wamp 中使用虚拟主机。因此,我将此行添加到我的<VirtualHost>->文件<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>

然后问题解决了!

于 2015-12-02T11:05:01.793 回答