我的代码在生产中,我运行了
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文件以前不存在,该代码发生了什么??你遇到过这样的错误吗?我已授予存储/文件夹和供应商/的所有权限。如有任何帮助/指导,我们将不胜感激。
我在运行php artisan config:cache
时遇到了类似的问题。显然,当应用程序试图加载缓存的配置文件中有闭包时,这是一个问题。Laravel不会解决这个问题,因为在配置文件中包含闭包是一种糟糕的做法。请参阅此Github问题
我解决这个问题的方法是撤消它。
删除配置的缓存。
它就在这里
bootstrap/cache/config.php
或
vendor/config.php
我过去也遇到过类似的问题,不知道是什么原因导致的,但现在你可以从/vendor
中删除config.php
,它不会破坏你的代码。
您的代码将开始工作。。
在其他根本原因中,当Laravel试图加载的任何配置文件中定义了闭包时,调用php artisan config:cache
会导致此错误。Laravel不允许在配置文件中使用闭包;参见:
https://github.com/laravel/framework/issues/9625
删除结果缓存文件(通常位于bootstrap/cache/config.php
)可以"修复"错误。
长期的解决方案是从所有配置文件中消除闭包。如错误消息中所述,可以通过检查有问题的行来确定有问题的配置文件。
如果有问题的文件是第三方文件,最好打开库的问题,以便在上游解决问题。
以下是我解决它的方法:
- 转到/vvendor/tymon/jwt-auth/src/config/config.php,将
storage
和auth
的行替换为:
'auth' => 'Tymon'JWTAuth'Providers'Auth'IlluminateAuthAdapter',
'storage' => 'Tymon'JWTAuth'Providers'Storage'IlluminateCacheAdapter'
- 转到
/bootstrap/cache/config.php
并将其删除 - 按顺序运行以下命令:
A)php artisan config/cache
B)php artisan jwt:generate
C)php artisan vendor:publish --provider="Tymon'JWTAuth'Providers'JWTAuthServiceProvider"
这样就可以了!
尝试从bootstrap/cache
文件夹中删除config.php。它对我有效。
编辑vendor'laravel'framework'src'Illuminate'Foundation'Support'Providers'RouteServiceProvider.php:108
并且需要删除。
将vendor/tymon/jwt-auth/src/config
中的config.php
文件更改为此
'auth' => Tymon'JWTAuth'Providers'Auth'IlluminateAuthAdapter::class`
和这个
'storage' => Tymon'JWTAuth'Providers'Storage'IlluminateCacheAdapter::class`
在运行php artisan config:cache
之前对我有效。
使用解决
composer update
composer install