Ошибка обновления Laravel 7
Я следил за документами по обновлению с Laravel 6.x до Laravel 7.x и внес необходимые изменения. Но он не работает и показывает следующую ошибку. Во время запускаcomposer update
не было сторонних пакетов. Затем я установил несколько других пакетов и после этого попытался обновить снова и застрял на этой ошибке.
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
PHP Fatal error: Uncaught TypeError: Argument 1 passed to Symfony\Component\Process\Process::__construct() must be of the type array, string given, called in phar:///usr/local/bin/composer/src/Composer/Util/ProcessExecutor.php on line 65 and defined in /var/www/html/laravel/laravel-starter/vendor/symfony/process/Process.php:140
Stack trace:
#0 phar:///usr/local/bin/composer/src/Composer/Util/ProcessExecutor.php(65): Symfony\Component\Process\Process->__construct(''/usr/bin/php7....', NULL, NULL, NULL, 300)
#1 phar:///usr/local/bin/composer/src/Composer/EventDispatcher/EventDispatcher.php(245): Composer\Util\ProcessExecutor->execute(''/usr/bin/php7....')
#2 phar:///usr/local/bin/composer/src/Composer/EventDispatcher/EventDispatcher.php(96): Composer\EventDispatcher\EventDispatcher->doDispatch(Object(Composer\Script\Event))
#3 phar:///usr/local/bin/composer/src/Composer/Autoload/AutoloadGenerator.php(312): Composer\EventDispatcher\EventDispatcher->dispatchScript('post-autoload-d...', true, Array, Array)
#4 phar:///usr/local/bin in /var/www/html/laravel/laravel-starter/vendor/symfony/process/Process.php on line 140
Fatal error: Uncaught TypeError: Argument 1 passed to Symfony\Component\Process\Process::__construct() must be of the type array, string given, called in phar:///usr/local/bin/composer/src/Composer/Util/ProcessExecutor.php on line 65 and defined in /var/www/html/laravel/laravel-starter/vendor/symfony/process/Process.php:140
Stack trace:
#0 phar:///usr/local/bin/composer/src/Composer/Util/ProcessExecutor.php(65): Symfony\Component\Process\Process->__construct(''/usr/bin/php7....', NULL, NULL, NULL, 300)
#1 phar:///usr/local/bin/composer/src/Composer/EventDispatcher/EventDispatcher.php(245): Composer\Util\ProcessExecutor->execute(''/usr/bin/php7....')
#2 phar:///usr/local/bin/composer/src/Composer/EventDispatcher/EventDispatcher.php(96): Composer\EventDispatcher\EventDispatcher->doDispatch(Object(Composer\Script\Event))
#3 phar:///usr/local/bin/composer/src/Composer/Autoload/AutoloadGenerator.php(312): Composer\EventDispatcher\EventDispatcher->dispatchScript('post-autoload-d...', true, Array, Array)
#4 phar:///usr/local/bin in /var/www/html/laravel/laravel-starter/vendor/symfony/process/Process.php on line 140
Исходный код проекта доступен по адресу: https://github.com/nasirkhan/laravel-starter/tree/v7
2 ответа
Убедитесь, что все ваши зависимости Symfony не ниже 5.0 и что ваш композитор обновлен, запустив composer self-update
.
Laravel 7 обновил Symfony с 4 до 5 и
Process
изменен синтаксис:
Перед:
$process = new Process('ls -l');
После:
$process = new Process(array('ls', '-l'));
Вам необходимо адаптировать код к новому синтаксису.
Подробнее здесь: https://github.com/symfony/symfony/blob/5.x/UPGRADE-5.0.md#process