2015-03-13 54 views
9

Laravel 5工作了一段时间后坠毁。这里的错误:Laravel 5 - 写信给供应商目录

file_put_contents(/Library/WebServer/Documents/project/vendor/services.json): failed to open stream: Permission denied

in Filesystem.php line 74

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

+2

'PHP工匠缓存:clear' – macki 2015-07-29 11:42:06

回答

9

(见下更新!)

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

受影响的文件:

  • services.json
  • compiled.php
  • routes.php文件

引述开发者之一:

It makes more sense in vendor. This makes it more clear that the file is very specifically tied to the installed dependencies.

更多信息和关于陈的讨论ges,请参阅this commmit

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

自v 5.1起,所有三个文件将被写入bootstrap/cache。如果你使用v。5.0,请阅读:

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

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

请参见下面的两次提交了更多的信息:

+2

这应该被接受的答案。 – 2015-03-24 02:20:05

+1

我该如何解决这个问题? – thegeekajay 2015-06-03 06:44:05

+1

@ ajay23romu,你有两个选择:1)升级到Laravel 5.1,它使用'bootstrap/cache'目录来存储缓存文件。确保这个目录是可写的。或2)编辑'bootstrap/app.php'并添加以下行:'$ app-> useStoragePathForOptimizations(true);'然后确保'storage/framework'目录是可写的。但是,建议升级到“长期支持”版本的Laravel 5.1。 – nicoqh 2015-06-27 22:50:14

18

试试这个工匠命令

php artisan cache:clear 
+0

太棒了!非常感谢:) – Matz 2015-03-23 18:00:27

+0

哇,我不知道发生了什么,但它的工作!尽管当我遇到这个问题时我正在设置Form Facade。 – 2015-03-29 16:10:51

+2

这对我有用。 – 2015-07-25 00:22:45