2011-10-18 43 views
7

我的問題可能很容易回答。我想通過shell 例如將shell參數傳遞給php

php test.php parameter1 parameter2 

執行與外殼和傳遞參數我的PHP文件,它是有辦法做到這一點,除了使用GET?

感謝

回答

7

是的,你可以這樣做,但你應該引用$_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 

希望這有助於。

+1

教程鏈接「通過shell訪問PHP」重定向到垃圾郵件網站! – Avi

4

您可以使用$argv得到的參數。

+0

是的,這就是我如何啓動PHP進程 – Atticus

+0

'$ argv'的URL已損壞,你能解決它嗎? –

+1

@PratikJaiswal感謝您的通知,修復它。 – xdazz