2016-05-09 113 views
1

我的Ubuntu 14.04和Laravel 5.1应用程序出现问题。'无法打开流:权限被拒绝'错误 - Laravel 5.1

当我的应用程序要登录我得到这个错误:

未捕获UnexpectedValueException:数据流或文件存储/日志/ L无法打开:未能打开流:权限在/ var否认/www/releases/20160426/booking_server/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:87\nStack追踪:\ n#0 ........继续

我找到了这个解决方案:

sudo php artisan cache:clear 

sudo chmod -R 777 storage 

sudo composer dump-autoload 

但问题在于它只是暂时的。这个问题每天都会回来,我总是也要这样做。

我能做些什么来阻止这种情况每天发生?

PD:我有日常日志,但如果可能的话,我想保持这种方式。

+0

如何创建每日日志?这听起来像也许是根作业或类似的根运行? –

+0

真的我不知道这一切都是由Laravel完成的。我只是把app.php'log'=>'daily' –

+0

谁拥有laravel目录?根?您应该将其切换到Web服务器组,并将您的用户添加到该组中 – James

回答

1

看起来他们已经在这里处理了similar issue。你有手动运行或通过cron运行的任何工匠命令吗?如果是这样,修复它,让他们作为您的网络用户运行可能会有所帮助。

如果不是这样,我真的觉得你最容易应用的解决方案这一套是this one

sudo setfacl -R -m u:www-data:7 /full/path/to/storage 

如果该命令不工作我挖出了一个可能的替代形式:

setfacl -d -m g:www-data:rw /full/path/to/laravel/storage/logs 

setfacl并不像应该那样受欢迎,它确实是设置Web服务器权限的最佳方法之一。

3

不建议在服务器世界可写(chmod 777)上建立一个目录。 设置权限,像这样,

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

(假设web服务器下组www数据运行)请参阅本:https://laracasts.com/discuss/channels/general-discussion/laravel-framework-file-permission-security

关于你的问题: 好像有一个进程在运行,创造了每天以root权限登录文件。你确定没有相同的cron设置吗?

如果不是,请在storage/logs目录中运行ls -l,并在此粘贴输出。 (在手动更改权限之前执行此操作)

相关问题