Ваши файлы конфигурации не сериализуемы - PullRequest
0 голосов
/ 28 августа 2018

Я бегал

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.

Я никогда раньше не сталкивался с этой ошибкой при запуске этой команды. Пожалуйста, любая помощь будет оценена. Спасибо.

Ответы [ 3 ]

0 голосов
/ 11 мая 2019

Чтобы узнать, где именно проблема, вы можете временно удалить $this->files->delete($configPath); из vendor/laravel/framework/src/Illuminate/Foundation/Console/ConfigCacheCommand.php. При этом bootstrap/cache/config.php не удаляется автоматически, и вы можете найти упомянутую строку (здесь 241) в файле config.php.

0 голосов
/ 14 июля 2019

Я нашел решение аналогичной ошибки.

Я обнаружил, что моя ошибка связана с закрытием в файле /config/sluggable.php (пакета для управления слагами, который я установил.

Мой код был следующим:

return [
    reserved => function(Model $model){
        return HelperController::reservedSlugs();
    }
];

Я сделал следующее, чтобы проверить, не является ли причиной этого закрытие:

return [
   reserved => array()
]

Тогда я побежал php artisan optimize. Больше не было проблемы - я нашел закрытие, которое вызывало проблему.

Итак, вместо исходного закрытия я сделал следующее, чтобы получить тот же результат:

$ reservedSlugs = HelperController :: reservedSlugs ();

return [
    'reserved' => $reservedSlugs
];
0 голосов
/ 29 августа 2018

Сериализация закрытия не допускается в Laravel и PHP в целом. Посмотрите в ваших файлах конфигурации любой файл, в котором вы использовали Closures, и переписайте этот фрагмент кода, используя традиционные функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...