【问题标题】:Argv and argc are undefined or nullargv 和 argc 未定义或为空
【发布时间】:2015-09-01 01:55:01
【问题描述】:

当我在 __construct 中尝试这个时:

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

返回错误

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

和数组

(size=0) 空

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

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

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

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

什么是解决方案?

【问题讨论】:

  • 可能是register_argc_argv的寄存器必须被激活。
  • register_argc_argv ;默认值:开;开发值:关闭;产值:关闭

标签: php command-line-arguments


【解决方案1】:

$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() 在构造内部不起作用...
猜你喜欢
  • 2013-09-08
  • 2018-11-30
  • 2011-04-15
  • 2011-12-17
  • 2012-04-20
  • 2010-12-03
  • 2020-11-03
  • 2013-05-27
  • 2015-03-27
相关资源
最近更新 更多