"laravel.log"无法打开:无法打开流

Jos*_*ain 12 php laravel laravel-4

我在本地OSX机器上设置了Laravel宅基地,一切似乎都顺利进行,直到我试图打开example.app:8000并得到此错误:

Error in exception handler: The stream or file "/home/vagrant/Code/example/app/storage/logs/laravel.log" could not be opened: failed to open stream: Protocol error in /home/vagrant/Code/example/bootstrap/compiled.php:8671
Run Code Online (Sandbox Code Playgroud)

我跟着Laravel文档和Laracast关于建立宅基地,所以我不确定是什么原因引起的.我可以看到它/home/vagrant/Code/example/app/storage/logs/laravel.log不存在,但我认为这应该是自动创建的?

Dan*_*ker 46

您下面的所有文件和文件夹app/storage都应该是可写的,并且可以将www-data(网络服务器)分组.

异常处理程序出错:无法打开流或文件"laravel/app/storage/logs/laravel.log":无法打开流:laravel/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler中的权限被拒绝.PHP:77

如果您在访问站点时在浏览器中收到此错误(或类似错误),则该组www-data无法写入app/storage.如果在执行某些php artisan命令时出现此错误,则您(用户)无法写入app/storage.因此,您和www-data组都必须具有写入权限.


要确保文件和文件夹具有正确的权限:

  1. 转到Laravel安装的根目录(在哪里composer.jsonartisan现场).

  2. 更改拥有的用户和组,yourusername您的用户名在哪里:

    sudo chown -R yourusername:www-data app/storage
    
    Run Code Online (Sandbox Code Playgroud)

    这个递归(-R)将用户:组所有者设置为yourusername:www-dataapp/storage之后的所有文件和文件夹.

  3. 为您和www-data组添加写入权限:

    sudo chmod -R ug+w app/storage
    
    Run Code Online (Sandbox Code Playgroud)

    这个递归(-R)将+write flag(w)添加到user(u)和group(g),从而拥有文件和文件夹app/storage.

  4. 此外,有些人建议您可能需要刷新应用程序缓存.

    php artisan cache:clear
    
    Run Code Online (Sandbox Code Playgroud)
  5. 最后,您可能想要重新生成Composer的自动加载文件.

    composer dump-autoload
    
    Run Code Online (Sandbox Code Playgroud)

  • 尝试更改拥有的用户/组时,我一直收到非法的组名错误 (4认同)
  • 喜欢这个解释.这是一个"教人钓鱼......"的解释,而不是"给人一条鱼". (3认同)

Chi*_*hah 4

您需要运行以下命令之一:

  • sudo chmod -R 644 app/storage
  • sudo chmod -R 755 app/storage

  • @ChiragShah 提供这样的命令(尤其是涉及权限)而不加任何解释有点不负责任,然后当他的系统崩溃时,你只需向他指出其他答案。懒惰的。 (23认同)