Laravel 8使用 佇列任務出現 「 syntax error, unexpected ')' 」錯誤解決

tsin發表於2020-10-02

問題

使用Laravel 的 Queue Job,執行後出現錯誤:

local.ERROR: syntax error, unexpected ')' {"exception":"[object] (ParseError(code: 0): syntax error, unexpected ')' at /home/vagrant/code/....../vendor/laravel/framework/src/Illuminate/Bus/BusServiceProvider.php:51)

報錯的問題是在:/vendor/laravel/framework/src/Illuminate\Bus/BusServiceProvider.php

protected function registerBatchServices()
    {
        $this->app->singleton(BatchRepository::class, DatabaseBatchRepository::class);

        $this->app->singleton(DatabaseBatchRepository::class, function ($app) {
            return new DatabaseBatchRepository(
                $app->make(BatchFactory::class),
                $app->make('db')->connection(config('queue.batching.database')),
                config('queue.batching.table', 'job_batches'),  // 這一行
            );
        });
    }

花了好幾個小時都沒找到問題所在,最後發現是php版本問題,使用社群提供的homestead預設的php版本是7.2,而laravel 8 要求的版本是7.3, PHP 7.3以下不支援函式最後一個引數末尾有逗號。
修改程式使用的php版本,在Homestead.yaml配置檔案中,指定php版本號:新增php: "7.3"

參考

github.com/laravel/framework/issue...

本作品採用《CC 協議》,轉載必須註明作者和本文連結
Was mich nicht umbringt, macht mich stärker

相關文章