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

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

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

我在这里错过了什么?

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

我认为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不起作用。

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

MAMP:

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

XAMMP:

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

用你喜欢的编辑器打开httpd.conf,然后searchUser/Group 。 search后,您将在您search的高亮行的下方看到以下这些行:

 User someuser Group somegroup 

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

 chown -R someuser:somegroup app/storage 

PS:如果你在做chown时得到了许可错误,试试这个:

 sudo chown -R someuser:somegroup app/storage 

然后它会要求input密码,然后input密码。

刚才遇到了这个问题上的centos 7.阻塞不是文件夹的权限,而是selinux政策阻止nginx / PHP访问/ var / www。 因此,如果以上方法无效,请尝试禁用selinux作为testing,以查看是否可以在没有任何许可问题的情况下重新运行composer php。

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

fopen(php:// stdout):未能打开stream:操作失败

我在Wamp中使用虚拟主机。 为此我在httpd-vhosts.conf文件httpd-vhosts.conf这一行添加到我的<VirtualHost> – > <Directory>块中:

 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> 

那么问题解决了!

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

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

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