【问题标题】:PHP - Cannot read CLI variables using _SERVERPHP - 无法使用 _SERVER 读取 CLI 变量
【发布时间】:2015-04-26 17:45:27
【问题描述】:

我试图在运行我的 php 文件(在 CLI 中)时读取文件名。

运行时命令:php phpfile.php filename.csv

代码行如下:

$argv = $_SERVER[argv];

我收到以下错误:

使用未定义的常量 argv - 在 /home/holcim/csvimport.php 第 14 行

我将register_argv_argc 设置为ON

【问题讨论】:

    标签: php parameters server argv argc


    【解决方案1】:

    这是因为 CLI SAPI 不存在 $_SERVER,因为命令行中没有服务器。您只需使用 $argc$argv,因为它们会自动填充。

    有关从 CLI 运行脚本的一些详细信息,请参阅 this doc page

    编辑

    请注意,$argv = $_SERVER[argv]; 将在任何 SAPI 中返回 Use of undefined constant argv - assumed 'argv'(即使对于网络服务器也是如此)。它应该是$argv = $_SERVER['argv'];,除非您将argv 定义为常量。

    【讨论】:

    • 是的,实际上是关于['argv']中的引号!
    • @AbraCadaver - 我喜欢 DatePeriods,它们很有用......省略号也很有用......这只是我倾向于跳过的正常时段
    【解决方案2】:

    利用 argv 数组和 argc 变量。这是让您开始的代码。如果您尝试在 Web 浏览器中运行它,它会显示错误。如果参数计数小于 2,则显示一条迷你帮助消息并退出。最后,当输入至少一个参数时,argument1 将包含第一个参数值。

    <?php
    if ($_SERVER['HTTP_USER_AGENT']){echo "Doesnt work in web mode";exit();}
    if ($argc < 2){
        echo "\n\n";
        echo $argv[0]." needs arguments as follows...\n\n";
        echo "argument1 -- does something\n";
        exit();
    }
    $argument1 = $argv[1];
    ?> 
    

    【讨论】:

      【解决方案3】:

      $argv 和 $argc 会在您运行脚本时自动设置。

      $argc 获取参数的数量(包括脚本名称),$argv 是一个包含参数的数组。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-04
        • 2011-07-11
        • 1970-01-01
        • 2017-05-08
        • 2018-02-23
        • 2015-08-25
        • 2012-01-12
        • 1970-01-01
        相关资源
        最近更新 更多