2010-07-27 52 views
1

我有一些需要GET和POST值啓動的腳本,我想通過shell測試它們。
有沒有辦法將值傳遞給該數組,以避免使用getenv()函數?PHP:如何將php cmd(從shell執行)傳輸到PHP GET和POST數組?

在此先感謝!

+0

請您詳細說明您的問題。 – Sarfraz 2010-07-27 10:06:49

+0

值得注意的是,HTTP和命令行在GET和POST方面有所不同。在你的情況下,它可能是相關或不相關的,但你應該考慮到它。 – 2010-07-27 10:26:27

+0

我的問題的最佳答案來自'cletus',最好的解決方案是'umop'!兩者均爲+1,umop爲正確答案。 謝謝大家 – CuSS 2010-07-27 10:56:09

回答

2

如果你的主要goa l只是要從命令行進行測試,我將使用wget命令,並使用查詢字符串(GET)調用腳本,並使用wget的--post-data=string參數(用於POST)傳遞發佈數據。

如果您的目標是因爲某種原因根本不使用Web服務器進行測試,我建議使用包裝並封裝您對GET和POST數據的訪問,以便您可以對其進行測試。

2

你需要的是一個包裝腳本,它設置相關的全局變量和環境變量,然後調用你的腳本。

+0

我的問題最好的答案是'cletus',最好的解決方案是'umop'!兩者均爲+1,umop爲正確答案。 謝謝大家 – CuSS 2010-07-27 10:57:10

0

看看:$_REQUEST

+0

'注意:在命令行上運行時,這不會包含argv和argc條目;這些存在於$ _SERVER數組中。 ' 感謝反正... – CuSS 2010-07-27 10:58:04

+0

II我錯過了:(對不起 – RobertPitt 2010-07-27 11:00:09

0

在命令行呼叫您

php test.php something1 something2 something3 

和你test.php的是

<?php 
print_r($argv); 
?> 

和輸出

Array 
(
    [0] => test.php 
    [1] => something1 
    [2] => something2 
    [3] => something3 
) 
1

嘗試是這樣的:

if(php_sapi_name() == 'cli' && empty($_SERVER['REMOTE_ADDR'])){ // make sure we're running in CLI 
    $args = $argv; // copy the argv array, we want to keep the original for (possible) future uses 
    array_shift($args); // the $argv[0] is the filename, we don't need it 
    for($i = 0;$i < ($argc - 1);$i++){ 
     list($key, $value) = explode('=', $args[$i]); 
     $_REQUEST[$key] = $value; 
    } 
} 

當然,更多的功能可以通過使用getopts的(如,--get ABC = DEF GHI JKL =名稱--post =測試passwd文件=測試加入 - cookie ilike = cookie),但這取決於你。

+0

+1的代碼... 不明白你的答案的最後一部分。 – CuSS 2010-07-27 10:59:34

1
if(php_sapi_name() == 'cli') 
{ 
    associateGetPost(); 
} 

function associateGetPost() 
{ 
    $_GET = $_POST = array(); //Reset 
    foreach($args as $id => $value) 
    { 
     if(substr($value,0,5) == '--get') 
     { 
      $_GET = parse_str(substr($value,5,-1)) 
     }elseif(substr($value,0,6) == '--post') 
     { 
      $_GET = parse_str(substr($value,6,-1)) 
     } 
    } 
} 

沿着這些線的東西。

+0

+1,但是會使用'umop'答案。感謝幫助'RobertPitt' – CuSS 2010-07-27 11:42:50