2015-02-24 60 views
0

我想在运行我的php文件(在CLI中)时读取文件名。PHP - 无法使用_SERVER读取CLI变量

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

的代码行如下:

$argv = $_SERVER[argv]; 

我收到以下错误:

Use of undefined constant argv - assumed 'argv' in /home/holcim/csvimport.php on line 14

register_argv_argc设置为ON

回答

0

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

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

2

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

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

编辑

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

+0

是的,它实际上是关于'['argv']'的引号! – amenthes 2015-02-24 22:16:27

+0

@AbraCadaver - 我喜欢DatePeriods,它们很有用......并且省略号也很有用......这只是一段正常的时期,我倾向于跳过 – 2015-02-24 22:27:04

0

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

<?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]; 
?>