2011-10-18 17 views
7

私の質問はおそらく簡単に答えるでしょう。私は、GETを使用したことを除いていることを行う方法があるシェルを使ってphpにパラメータを渡す

php test.php parameter1 parameter2 

シェル 例を経由してシェルで私のPHPファイルを実行し、それにパラメータを渡したいですか?

おかげ

答えて

7

はい、そのようにすることができますが、$_SERVER['argv']配列の引数を参照する必要があります。 $_SERVER['argc']は、受け取ったargの数を通知します。必要な数のargが入力されたことを確認するために、最初の検証レイヤーとして使用する必要がある場合は、受け取ったargsの数が表示されます。

#!/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" 
} 

ここでは、実用的な例です。この例では

、我々は作成しますargs.php arg1 arg2 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

チュートリアルのリンク「PHP throuh SHELLへのアクセス」は、スパムサイトにリダイレクトされます。 – Avi

4

あなたはパラメータを取得するために$argvを使用することができます。

+0

これは私がPHPプロセスを起動する方法です。 – Atticus

+0

'$ argv'のURLが壊れていますが、修正できますか? –

+1

@PratikJaiswal通知のためにありがとう、それを修正しました。 – xdazz

関連する問題