【问题标题】:pass parameters to php with shell使用shell将参数传递给php
【发布时间】:2011-12-09 19:43:55
【问题描述】:

我的问题可能很容易回答。我想用shell执行我的php文件并通过shell将参数传递给它 例子

php test.php parameter1 parameter2

除了使用 GET 之外,还有其他方法吗?

谢谢

【问题讨论】:

    标签: php shell argument-passing


    【解决方案1】:

    是的,您可以这样做,但您应该引用 $_SERVER['argv'] 数组中的参数。 $_SERVER['argc'] 将告诉您收到了多少个参数,如果您想将其用作第一层验证以确保输入了所需数量的参数。

    为了说明这一点,以args.php arg1 arg2 arg3 运行以下脚本:

    #!/usr/bin/php
    <?php
    var_dump($argv);
    ?>
    

    将输出:

    array(4) {
      [0]=>
      string(8) "args.php"
      [1]=>
      string(4) "arg1"
      [2]=>
      string(4) "arg2"
      [3]=>
      string(4) "arg3"
    }
    

    这是一个实际的例子:

    在本例中,我们将创建一个脚本 (days.php),用于输出自特定日期以来的天数。它将接受 3 个参数,即月、日和年作为数字。

    #!/usr/bin/php
    <?php
    if($argc < 4 || !is_numeric($argv[1]) || !is_numeric($argv[2]) || !is_numeric($argv[3]))
    {
        echo "Usage: $argv[0] mm dd yyyy\n";
    }
    else
    {
        $pastdate = mktime(0, 0, 0, $argv[1], $argv[2], $argv[3]);
        $diff = time() - $pastdate;
        $days = round($diff/60/60/24);
        echo "$days days since $argv[1]/$argv[2]/$argv[3]\n";
    }
    ?>
    

    外壳调用:

    `$ ./days 11 17 1988` OR `php days.php 11 17 1988`
    

    输出:

    7699 days since 11/17/1988
    

    希望这会有所帮助。

    【讨论】:

    • 教程链接“通过 SHELL 访问 PHP”重定向到垃圾站点!
    【解决方案2】:

    您可以使用$argv获取参数。

    【讨论】:

    • 是的,这就是我启动 php 进程的方式
    • $argv的网址坏了,能修一下吗?
    • @PratikJaiswal 感谢您的通知,已修复。
    猜你喜欢
    • 1970-01-01
    • 2018-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-11
    • 2023-03-15
    • 2017-04-03
    相关资源
    最近更新 更多