ошибка, когда я запускаю команду миграции php artisan в строке 51

Когда я запускаю команду php artisan migrate в терминале, у меня остается это.

   ParseError 

  syntax error, unexpected ')'

  at C:\laragon\www\testnum2\vendor\laravel\framework\src\Illuminate\Bus\BusServiceProvider.php:51
     47▕             return new DatabaseBatchRepository(  
     48▕                 $app->make(BatchFactory::class), 
     49▕                 $app->make('db')->connection(config('queue.batching.database')),
     50▕                 config('queue.batching.table', 'job_batches'),
  ➜  51▕             );
     52▕         });
     53▕     }
     54▕
     55▕     /**

  1   C:\laragon\www\testnum2\vendor\composer\ClassLoader.php:322
      Composer\Autoload\includeFile("C:\laragon\www\testnum2\vendor\composer/../laravel/framework/src/Illuminate/Bus/BusServiceProvider.php")

  2   [internal]:0
      Composer\Autoload\ClassLoader::loadClass("Illuminate\Bus\BusServiceProvider")
PS C:\laragon\www\testnum2>

Я не совсем уверен, в чем причина, но это код файла, который вызывает ошибку.

<?php

namespace Illuminate\Bus;

use Illuminate\Contracts\Bus\Dispatcher as DispatcherContract;
use Illuminate\Contracts\Bus\QueueingDispatcher as QueueingDispatcherContract;
use Illuminate\Contracts\Queue\Factory as QueueFactoryContract;
use Illuminate\Contracts\Support\DeferrableProvider;
use Illuminate\Support\ServiceProvider;

class BusServiceProvider extends ServiceProvider implements DeferrableProvider
{
    /**
     * Register the service provider.
     *
     * @return void
     */
    public function register()
    {
        $this->app->singleton(Dispatcher::class, function ($app) {
            return new Dispatcher($app, function ($connection = null) use ($app) {
                return $app[QueueFactoryContract::class]->connection($connection);
            });
        });

        $this->registerBatchServices();

        $this->app->alias(
            Dispatcher::class, DispatcherContract::class
        );

        $this->app->alias(
            Dispatcher::class, QueueingDispatcherContract::class
        );
    }

    /**
     * Register the batch handling services.
     *
     * @return void
     */
    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'),
            );
        });
    }

    /**
     * Get the services provided by the provider.
     *
     * @return array
     */
    public function provides()
    {
        return [
            Dispatcher::class,
            DispatcherContract::class,
            QueueingDispatcherContract::class,
            BatchRepository::class,
        ];
    }
}

Я надеюсь, что этого достаточно, чтобы получить помощь. Я также хочу упомянуть, что я использовал миграцию php artisan раньше, и недавно мне пришлось обновить некоторые вещи, такие как композитор и phpmyadmin.


person Muamar Collins    schedule 04.10.2020    source источник
comment
какую версию php вы используете?   -  person Sumit Wadhwa    schedule 04.10.2020
comment
Скорее всего, это запятая в конце вызова функции: config('queue.batching.table', 'job_batches'), и у вас есть php 7.2 (или старше), где это еще не разрешено.   -  person Ilia Kondrashov    schedule 04.10.2020


Ответы (2)


Проблема в том, что используемая вами версия PHP (ниже 7.3) не поддерживает конечную запятую в вызовах функций.

Прочтите это: Запятые в конце разрешены в вызовах

Решение состоит в том, чтобы переключиться на > PHP 7.3

person Sumit Wadhwa    schedule 04.10.2020
comment
есть ли причина для запятой. это работает, когда я удалил запятую. Так что просто для подтверждения, это не вызовет проблем в будущем, верно? - person Muamar Collins; 04.10.2020
comment
вы не должны ничего менять в каталоге vendor. потому что одно единственное обновление может сломать весь ваш сайт, потому что ваших изменений там не будет. Я бы посоветовал вам использовать вместо этого php7.3 или laravel 7. - person Sumit Wadhwa; 04.10.2020
comment
когда я запускал ‹?php phpinfo() ?›, он отображался как PHP 7.4.11. Я не такой опытный, возможно, я скачал не тот. это было php-7.4.11-Win32-vc15-x64.zip на официальном сайте - person Muamar Collins; 04.10.2020
comment
@MuamarCollins, это странно. если вы используете php7.4, у вас не должно быть этой проблемы. - person Sumit Wadhwa; 04.10.2020
comment
да, как вы думаете, может быть, это проблема с phpmyadmin или что-то в этом роде. Я могу просто переустановить laragon, и тогда я, вероятно, смогу точно определить, что это такое. у меня не было этой проблемы до обновления. - person Muamar Collins; 04.10.2020
comment
в вашей системе разные версии, а интерфейс командной строки и веб-сервер могут иметь разные конфигурации - person lagbox; 04.10.2020

Моя проблема заключалась в том, что мой PHP был ‹7.3

Но когда я просто проверил его в файле phpinfo, он появился как 7.4.11.

@lagbox помог мне, сказав: в вашей системе разные версии, а интерфейс командной строки и веб-сервер могут иметь разные конфигурации

Честно говоря, я не знал, что с этим делать, но я решил просто удалить PHP 7.2 из PATH.

  • Я надеялся, что тогда он распознает, что я использую 7.4, и, к моему удивлению, это произошло.
  • Также я уверен, что есть более эффективные способы сделать это, но я выбрал именно этот.
person Muamar Collins    schedule 05.10.2020