首頁  >  問答  >  主體

Laravel 腳本嘗試呼叫不完整物件上的方法

我剛從 v8 升級到 Laravel 9,突然開始出現此錯誤,

Error: The script tried to call a method on an incomplete object. Please ensure that the class definition "LaravelSerializableClosureSerializableClosure" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide an autoloader to load the class definition
#35 /vendor/laravel/framework/src/Illuminate/Queue/CallQueuedClosure.php(68): IlluminateQueueCallQueuedClosure::handle
#34 /vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): IlluminateContainerBoundMethod::IlluminateContainer{closure}
#33 /vendor/laravel/framework/src/Illuminate/Container/Util.php(40): IlluminateContainerUtil::unwrapIfClosure
#32 /vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): IlluminateContainerBoundMethod::callBoundMethod
#31 /vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(37): IlluminateContainerBoundMethod::call
#30 /vendor/laravel/framework/src/Illuminate/Container/Container.php(610): IlluminateContainerContainer::call
#29 /vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(128): IlluminateBusDispatcher::IlluminateBus{closure}
#28 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): IlluminatePipelinePipeline::IlluminatePipeline{closure}
#27 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): IlluminatePipelinePipeline::then
#26 /vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(132): IlluminateBusDispatcher::dispatchNow
#25 /vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(118): IlluminateQueueCallQueuedHandler::IlluminateQueue{closure}
#24 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): IlluminatePipelinePipeline::IlluminatePipeline{closure}
#23 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): IlluminatePipelinePipeline::then
#22 /vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(120): IlluminateQueueCallQueuedHandler::dispatchThroughMiddleware
#21 /vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): IlluminateQueueCallQueuedHandler::call
#20 /vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(98): IlluminateQueueJobsJob::fire
#19 /vendor/laravel/framework/src/Illuminate/Queue/Worker.php(406): IlluminateQueueWorker::process
#18 /vendor/laravel/framework/src/Illuminate/Queue/Worker.php(356): IlluminateQueueWorker::runJob
#17 /vendor/laravel/framework/src/Illuminate/Queue/Worker.php(158): IlluminateQueueWorker::daemon
#16 /vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(116): IlluminateQueueConsoleWorkCommand::runWorker
#15 /vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(100): IlluminateQueueConsoleWorkCommand::handle
#14 /vendor/laravel/horizon/src/Console/WorkCommand.php(51): LaravelHorizonConsoleWorkCommand::handle
#13 /vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): IlluminateContainerBoundMethod::IlluminateContainer{closure}
#12 /vendor/laravel/framework/src/Illuminate/Container/Util.php(40): IlluminateContainerUtil::unwrapIfClosure
#11 /vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): IlluminateContainerBoundMethod::callBoundMethod
#10 /vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(37): IlluminateContainerBoundMethod::call
#9 /vendor/laravel/framework/src/Illuminate/Container/Container.php(610): IlluminateContainerContainer::call
#8 /vendor/laravel/framework/src/Illuminate/Console/Command.php(136): IlluminateConsoleCommand::execute
#7 /vendor/symfony/console/Command/Command.php(298): SymfonyComponentConsoleCommandCommand::run
#6 /vendor/laravel/framework/src/Illuminate/Console/Command.php(121): IlluminateConsoleCommand::run
#5 /vendor/symfony/console/Application.php(1015): SymfonyComponentConsoleApplication::doRunCommand
#4 /vendor/symfony/console/Application.php(299): SymfonyComponentConsoleApplication::doRun
#3 /vendor/symfony/console/Application.php(171): SymfonyComponentConsoleApplication::run
#2 /vendor/laravel/framework/src/Illuminate/Console/Application.php(93): IlluminateConsoleApplication::run
#1 /vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(129): IlluminateFoundationConsoleKernel::handle
#0 /artisan(37): null

錯誤來自以下文件,第 33 行,即 dispatch(...)

<?php

namespace AppLogging;

use AppModelsHttpLog;
use IlluminateHttpRequest;

class CustomLogWriter implements SpatieHttpLoggerLogWriter
{
    public function shouldLogRequest(Request $request): bool
    {
        if ($request->hasFile('file')) {
            return false;
        }

        # default 
        // return in_array(strtolower($request->method()), ['post', 'put', 'patch', 'delete']);

        # firehose
        return true;
    }

    public function logRequest(Request $request)
    {
        if (config('feature.logAllHttpRequests')) {

            $log = [];
            $log['method'] = $request->getMethod();
            $log['url'] = $request->getPathInfo();
            $log['headers'] = json_encode($request->headers->all());
            $log['body'] = json_encode($request->except(config('http-logger.except')));

            dispatch(function () use ($log) {
                $newLog = new HttpLog;
                $newLog->url = $log['url'];
                $newLog->method = $log['method'];
                $newLog->headers = $log['headers'];
                $newLog->body = $log['body'];
                $newLog->created_at = now();
                $newLog->save();
            });
        }
    }
}

你認為我做錯了什麼?

Laravel 版本:9.11.0 PHP版本:8.0.18

P粉790819727P粉790819727363 天前858

全部回覆(1)我來回復

  • P粉803527801

    P粉8035278012023-11-13 19:54:07

    清除快取並重新啟動 Horizo​​n 有效。

    php artisan 最佳化:清除

    回覆
    0
  • 取消回覆