关于php artisan配置的Laravel 5:清除生成的Closure :: __ set_state()错误

时间:2015-07-01 06:47:07

标签: php laravel-5

我的代码在生产中,我跑了

php artisan config:clear

之后,我的代码没有运行。索引页面和所有其他页面都显示为白屏,并在firebug中显示500内部服务器错误。当我试图运行时

php artisan

它给了我错误

PHP Fatal error:  Call to undefined method Closure::__set_state() in /var/www/live/vendor/config.php on line 56

我的代码正在制作中!!之前没有/vendor/config.php文件,该代码发生了什么? 你有没有遇到过这样的错误? 我已经授予存储/文件夹和vendor /的所有权限。 任何帮助/指南将不胜感激。

7 个答案:

答案 0 :(得分:20)

我跑php artisan config:cache时遇到了类似的问题。显然,当应用程序尝试加载其中包含闭包的缓存配置文件时,这是一个问题。它不会在Laravel中修复,因为在配置文件中关闭是一个不好的做法。请参阅此Github issue

我解决这个问题的方法是撤消这个。

删除config的缓存。

它位于此处

bootstrap/cache/config.php

OR

vendor/config.php

答案 1 :(得分:19)

我过去遇到过类似的问题,不知道是什么造成的,但截至目前,您可以从config.php删除/vendor,但不会破坏您的代码。

您的代码将开始工作..

答案 2 :(得分:8)

在其他根本原因中,当在Laravel尝试加载的任何配置文件中定义闭包时,调用php artisan config:cache会导致此错误。 Laravel不允许在配置文件中关闭;见:

https://github.com/laravel/framework/issues/9625

删除生成的缓存文件(通常位于bootstrap/cache/config.php),“修复”错误。

长期解决方案是消除所有配置文件中的闭包。有问题的配置文件可以通过检查有问题的行来确定,如错误消息中所述。

如果违规文件是第三方,最好打开库的问题,以便在上游修复问题。

答案 3 :(得分:6)

以下是我要解决的问题:

  1. 转到/vendor/tymon/jwt-auth/src/config/config.php并将storageauth的行替换为:
  2. 'auth' => 'Tymon\JWTAuth\Providers\Auth\IlluminateAuthAdapter',
    'storage' => 'Tymon\JWTAuth\Providers\Storage\IlluminateCacheAdapter'

    1. 转到/bootstrap/cache/config.php并将其删除
    2. 按顺序运行以下命令:
      A)php artisan config/cache
      B)php artisan jwt:generate
      C)php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider"
    3. 那应该这样做!

答案 4 :(得分:1)

尝试从bootstrap/cache文件夹中删除config.php。它对我有用。

答案 5 :(得分:0)

使用

解决
composer update

composer install

答案 6 :(得分:-1)

config.php内的vendor/tymon/jwt-auth/src/config文件更改为此

'auth' => Tymon\JWTAuth\Providers\Auth\IlluminateAuthAdapter::class` 

和这个

'storage' => Tymon\JWTAuth\Providers\Storage\IlluminateCacheAdapter::class` 
在跑步php artisan config:cache为我工作之前