2015-02-24 37 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]; 
?>