php - Laravel artisan down with message parameter with spaces 给出 Too many arguments, expected arguments "command"

标签 php laravel symfony laravel-artisan

我经营 artisan :

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 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 解析完全不同,一个忽略双引号作为字符串分隔符,而后者则不

关于php - Laravel artisan down with message parameter with spaces 给出 Too many arguments, expected arguments "command",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53191654/

相关文章:

php - 修改抓取网页中包含的 JavaScript 的最佳方法是什么?

mysql - Laravel Eloquent 连接多个表

php - Laravel 数组验证数组中的唯一属性,但不需要在表中唯一

php - Symfony2 - 如何在 findBy 中搜索 json_array 字段

php - 如何使用 doctrine 2 查询生成器选择字段

php - symfony - IS_AUTHENTICATED_ANONYMOUSLY 不工作

php - 几乎相同的代码,但输出不同,为什么?

php - 从字符串中删除所有非数字字符; [^0-9] 与预期不匹配

php - 基于服务器 url 路径的条件 header 源

php - Laravel 接口(interface)