14

我正在尝试执行此代码:

function main(){
  if ($argc < 1){
    listDir(".");
  }
  else{
    for($i = 0; $i <= sizeof($argv); $i++){
      listDir($argv[$i]);
    }
  }
}

但我收到以下错误:

PHP 注意:未定义变量:第 15 行 /home/me/test.php 中的 argc

我认为 $argv 和 $argc 是全局变量。我怎样才能摆脱这个错误?

我正在从命令行运行它。

4

3 回答 3

32

添加一个

global $argc, $argv;

function main() {

这些变量在全局范围内,但不在您的函数范围内。global 关键字导入它们。

于 2013-05-07T22:19:19.193 回答
6

你可能想做:

$argc = $_SERVER['argc'];
$argv = $_SERVER['argv'];
于 2014-02-28T12:24:03.490 回答
2

我有同样的问题。

您可以运行以下命令。

php -i | grep argv # Run this command

它会输出这个:

<tr><td class="e">register_argc_argv</td><td class="v"> Off</td><td class="v"> Off</td></tr>

这意味着您的 PHP 解释器没有注册argvargc

如果它关闭,您可以转到您的php.ini文件并将其设置为register_argc_argv = On.

这解决了我的问题。

于 2014-09-16T12:51:14.920 回答