Бегу ремесленником:
php artisan down --message "Going down for maintenance" --retry=60
[ОБНОВЛЕНИЕ] ИЛИ запустите его, как предложил @Remul:
php artisan down --message = "Going down for maintenance" --retry=60
то оба дают мне ошибку:
[Symfony\Component\Console\Exception\RuntimeException]
Too many arguments, expected arguments "command".
Если запустить команду без таких пробелов:
php artisan down --message "Going_down_for_maintenance" --retry=60
Ошибка не возникает
Я согласен с Ремулом. Без знака равенства он будет думать, что «отказ от ремонта» - это еще один аргумент. Если вы посмотрите на документация, он показывает php artisan down --message = "Upgrading Database" --retry=60
не работает дает ту же ошибку
@aynber Я заметил, что код symfony имеет это: public function __construct(array $argv = null, InputDefinition $definition = null) { if (null === $argv) { $argv = $_SERVER['argv']; } , и проблема заключается в этом глобальном, поэтому в php






Это сообщение доступно в файле в формате JSON с именем storage / framework / down, созданном командой php artisan down.
Вы можете открыть этот файл и изменить его.
Удачи
Я использую php 7.0.14
Я понял:
Проблема в том, как php получает аргументы из командной строки. В vendor / symfony / console / Input / ArgvInput.php я мог понять, что php получает такие аргументы:
0 => "artisan"
1 => "down"
2 => "--message=Going"
3 => "down"
4 => "for"
5 => "maintenance"
6 => "--retry=60"
Так что даже чтобы убедиться, что я сделал собственный сценарий с таким содержанием:
<?php
var_dump($argv);
И запускаю его:
php -v;php test_argv.php "parm with space" other_parameter
Результат был:
PHP 7.0.14 (cli) (built: Jan 30 2017 15:45:33) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
array(5) {
[0]=>
string(13) "test_argv.php"
[1]=>
string(4) "parm"
[2]=>
string(4) "with"
[3]=>
string(5) "space"
[4]=>
string(15) "other_parameter"
}
Я запускаю его на другом компьютере с другой версией PHP и смотрю на свои результаты:
PHP 7.1.5 (cli) (built: Sep 19 2017 10:48:01) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
with Xdebug v2.5.4, Copyright (c) 2002-2017, by Derick Rethans
array(3) {
[0] =>
string(13) "test_argv.php"
[1] =>
string(15) "parm with space"
[2] =>
string(15) "other_parameter"
}
Похоже, что в php 7.0 и 7.1 парсинг argv совсем другой, один игнорирует двойные кавычки как разделитель строк, а позже нет
Это не связанная с этим проблема, но это было то место, куда меня прислал Google, когда я сделал эту ошибку ... так ..
Другая распространенная причина получить:
Too many arguments, expected arguments "command".
Это то, что вы предоставляете аргумент, когда ремесленный сценарий ожидает вариант. Итак, вам нужно изменить
./artisan yourcommand:yoursubcommand some_kind_of_input
к
./artisan yourcommand:yoursubcommand --an_option=some_kind_of_input
Ошибка обычно означает, что мастер не ожидал дополнительных аргументов для этой команды ...
У меня была такая же проблема, просто нужно было экранировать сообщение, используя обратную косую черту:
php artisan down --message "Going\ down\ for\ maintenance" --retry=60
Можете ли вы попробовать со знаком равенства для параметра сообщения:
php artisan down --message = "Going down for maintenance" --retry=60.