Argv和argc未定义或为null

时间:2015-06-16 09:57:12

标签: php command-line-arguments

当我在__construct中尝试这个时:

var_dump($argc);
var_dump($argv);
var_dump($_SERVER["argv"]);

它返回错误

  

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

和数组

  

(size = 0)为空

当我在global中声明$ argc和$ argv时,它返回所有null。

我也正在使用像这样的nncron解析参数:

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

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

什么是解决方案?

1 个答案:

答案 0 :(得分:5)

$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);