参数argv和argc未定义或为空。

6
当我在__construct中尝试这样做时:
var_dump($argc);
var_dump($argv);
var_dump($_SERVER["argv"]);

出现错误

未定义变量:argc和
未定义变量:argv

和数组

(大小=0) 空

当我在全局声明$argc和$argv时,返回所有的null。

同时,我正在使用nncron解析参数,如下所示:

* * * * * php \php\class.xmlcontroler.php timeout=60

0 * * * * php \php\class.xmlcontroler.php timeout=3600

什么是解决方案?


4
也许需要激活注册器register_argc_argv - Henrik
register_argc_argv ; 默认值:开启 ; 开发中的取值:关闭 ; 生产环境中的取值:关闭 - user1814358
2个回答

8

$argv$argc只能在全局命名空间中使用。您需要将它们作为参数传递给构造函数。

<?php
function foo()
{
    var_dump($argv);
}
echo "global\n";
var_dump($argv);

echo "function\n";
foo();

我将提供:

global
array(2) {
  [0]=>
  string(5) "a.php"
  [1]=>
  string(3) "123"
}
function
NULL

当以这种方式调用时:php a.php 123

更新:类示例

<?php
class Foo
{
    public function __construct($argv)
    {
        // use $argv
    }
}

$foo = new Foo($argv);

所以函数foo()不在类中?如果它不在类中,我该如何调用它?foo()或$this->foo()在构造函数中都无法工作... - user1814358

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接