我在设置Laravel 4时遇到问题。打开索引页面时出现此错误:
file_put_contents(/Users/laravel/app/storage/meta/services.json)[function.file-put-contents]:
无法打开流:权限被拒绝。
我在这里缺少什么?
答案 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服务器用户对这些文件夹具有写入权限。