我跑了
php artisan config:cache
在我的终端上,我得到了LogicException
LogicException : Your configuration files are not serializable.
at C:\xampp\htdocs\penschool\vendor\laravel\framework\src\Illuminate\Foundation\Console\ConfigCacheCommand.php:68
64| require $configPath;
65| } catch (Throwable $e) {
66| $this->files->delete($configPath);
67|
68| throw new LogicException('Your configuration files are not serializable.', 0, $e);
69| }
70|
71| $this->info('Configuration cached successfully!');
72| }
Exception trace:
1 Error::("Call to undefined method Closure::__set_state()")
C:\xampp\htdocs\penschool\bootstrap\cache\config.php:241
2 require()
C:\xampp\htdocs\penschool\vendor\laravel\framework\src\Illuminate\Foundation\Console\ConfigCacheCommand.php:64
Please use the argument -v to see more details.
在运行此命令之前,我从未遇到此错误。请任何帮助将不胜感激。谢谢。
答案 0 :(得分:2)
Laravel和PHP一般都不允许闭包序列化。在配置文件中查找使用了Closures的任何文件,然后使用传统功能重写该代码段。
答案 1 :(得分:1)
要找出问题的确切出处,可以暂时将$this->files->delete($configPath);
从vendor/laravel/framework/src/Illuminate/Foundation/Console/ConfigCacheCommand.php
中删除。这样做bootstrap/cache/config.php
不会被自动删除,您可以在config.php文件中查找提到的行(此处为241)。
答案 2 :(得分:0)
我找到了解决类似错误的方法。
我发现我的错误与/config/sluggable.php文件(用于管理已安装的插件的软件包的)中的关闭有关。
我的代码如下:
return [
reserved => function(Model $model){
return HelperController::reservedSlugs();
}
];
我做了以下测试,以检查是否是造成此问题的原因:
return [
reserved => array()
]
然后我运行了php artisan optimize
。不再有问题-我发现了导致问题的关闭。
因此,代替原始的闭合,我做了以下操作以获得相同的结果:
$ reservedSlugs = HelperController :: reservedSlugs();
return [
'reserved' => $reservedSlugs
];
答案 3 :(得分:0)
当我运行PHP 7.2升级到7.4时,这发生在我身上。