PHP - 无法使用_SERVER读取CLI变量

时间:2015-02-24 21:51:26

标签: php parameters server argv argc

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

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

代码行如下:

$argv = $_SERVER[argv];

我收到以下错误:

  

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

我将register_argv_argc设置为ON

3 个答案:

答案 0 :(得分:2)

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

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

修改

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

使用argv数组和argc变量。这里是启动你的代码。如果您尝试在Web浏览器中运行它,则会显示错误。如果参数计数小于2,则显示迷你帮助消息并退出。最后,当输入至少1个参数时,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];
?>