【问题标题】:Laravel 5 - Write to vendor directoryLaravel 5 - 写入供应商目录
【发布时间】:2019-07-05 05:08:59
【问题描述】:

Laravel 5 工作一段时间后崩溃。这是错误:

file_put_contents(/Library/WebServer/Documents/project/vendor/services.json): 无法打开流:权限被拒绝

在 Filesystem.php 第 74 行

我想知道为什么它试图写入供应商目录?

【问题讨论】:

  • php artisan cache:clear

标签: laravel-5


【解决方案1】:

试试这个工匠命令

php artisan cache:clear

【讨论】:

  • 太棒了!非常感谢:)
  • 哇,我不知道发生了什么,但它奏效了!虽然我在设置 Form Facade 时遇到了这个问题。
【解决方案2】:

(请参阅下面的更新!)

一些用于缓存的存储文件被移动到 Laravel v5.0.15 的不同位置。

受影响的文件:

  • services.json
  • 编译的.php
  • routes.php

引用其中一位开发者的话:

在供应商中更有意义。这使得文件更清楚 与已安装的依赖项密切相关。

有关更改的更多信息和讨论,请参阅this commit

更新:维护者在讨论后改变了这种行为。

从 v5.1 开始,所有三个文件都将写入bootstrap/cache。如果您使用的是 v5.0.*,请继续阅读:

供应商目录不会被写入,除非它实际上是可写的。

另外,方法useStoragePathForOptimizations(bool) 被添加到Illuminate\Foundation\App 并且可以从bootstrap/app.php 调用。这将设置属性$useStoragePathForOptimizations 并确定是否应使用存储目录进行优化。

有关更多信息,请参阅以下两个提交:

【讨论】:

  • @ajay23romu,你有两个选择:1) 升级到 Laravel 5.1,它使用 bootstrap/cache 目录来存储缓存文件。确保该目录是可写的。或者 2) 编辑bootstrap/app.php 并添加这一行:$app->useStoragePathForOptimizations(true); 然后确保目录storage/framework 是可写的。但是,建议升级到 Laravel 5.1,这是一个“长期支持”版本。
猜你喜欢
  • 2017-09-07
  • 2014-04-16
  • 2016-12-22
  • 1970-01-01
  • 2017-05-02
  • 2017-01-11
  • 1970-01-01
  • 2015-09-07
  • 2017-01-04
相关资源
最近更新 更多