Laravel artisan down с параметром сообщения с пробелами дает слишком много аргументов, ожидаемые аргументы "команда"

Бегу ремесленником:

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 = "Going down for maintenance" --retry=60.

Remul 07.11.2018 15:43

Я согласен с Ремулом. Без знака равенства он будет думать, что «отказ от ремонта» - это еще один аргумент. Если вы посмотрите на документация, он показывает php artisan down --message = "Upgrading Database" --retry=60

aynber 07.11.2018 15:54

не работает дает ту же ошибку

user6092942 07.11.2018 15:55

@aynber Я заметил, что код symfony имеет это: public function __construct(array $argv = null, InputDefinition $definition = null) { if (null === $argv) { $argv = $_SERVER['argv']; } , и проблема заключается в этом глобальном, поэтому в php

user6092942 07.11.2018 16:04
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
4
2 809
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Это сообщение доступно в файле в формате 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

Другие вопросы по теме