我在设置 Laravel 4 时遇到问题。打开索引页面时出现此错误:
file_put_contents(/Users/laravel/app/storage/meta/services.json)[function.file-put-contents]:
无法打开流:权限被拒绝。
我在这里想念什么?
我认为 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。
该storage
目录需要可由网络服务器用户写入。
最好不要改权限,直接owner:group
把 storage 文件夹改成owner:group
apache 就行了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
然后它会询问您的密码,所以输入它然后完成。
刚刚在centos 7上遇到了这个问题。阻止程序不是文件夹权限,而是selinux策略阻止nginx/php访问/var/www。因此,如果上述方法不起作用,请尝试禁用 selinux 作为测试,看看是否可以在没有任何权限问题的情况下重新运行 composer。
如果您在 Ubuntu 上使用 Apache,则 storage 和 bootstrap/cache 文件夹需要可由 Web 服务器用户写入。
sudo chgrp -R www-data storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache
这将允许 Web 服务器用户对这些文件夹具有写入权限。
在我的情况下,这个错误被抛出:
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>
然后问题解决了!