解决配置文件中有回调函数,从而导致 PHP artisan config:cache 出错的解决办法
这个问题都已经出现了3次,还没人分享出解决方案,但我在这里找到了办法: 也就是将回调函数写为helper中的函数或者类中的方法就可以了。
- 修改
config/administrator.php,将下面代码:'permission' => function () { // 只要是能管理内容的用户,就允许访问后台 return Auth::check() && Auth::user()->can('manage_contents'); },换为:'permission' => 'manage_contents', 然后在
bootstrap/helpers.php中 新增如下代码:if (!function_exists('manage_contents')) { function manage_contents() { return Auth::check() && Auth::user()->can('manage_contents'); } } - 接下来测试
php artisan config:cache,没想到还是失败!好沮丧!睡觉。 -
第二天早上起来,突然想到这条命令是对所有缓存文件进行操作,于是检查了一下其他文件,发现了在
config/administrator/users.php中还隐藏了3个回调函数,于是如法炮制,将他们全部改为 helper中的函数,如下:if (!function_exists('manage_users')) { function manage_users() { return Auth::check() && Auth::user()->can('manage_users'); } } if (!function_exists('administrator_users_avatar')) { function administrator_users_avatar($avatar, $model) { return empty($avatar) ? 'N/A' : '<img src="'.$avatar.'" width="40">'; } } if (!function_exists('administrator_users_name')) { function administrator_users_name($name, $model) { return '<a href="/users/'.$model->id.'" target=_blank>'.$name.'</a>'; } } - 再修改
config/administrator/users.php调用的方式:. . . 'permission' => 'manage_users', . . . 'output' => 'administrator_users_avatar', . . . 'output' => 'administrator_users_name', . . . - php artisan config:cache
Configuration cache cleared! Configuration cached successfully! - 在进入后台测试,没问题,Done!
关于 LearnKu
推荐文章: