2011-07-21 15 views
19

私はphpスクリプトを実行するbashスクリプトを実行しました。これは、パラメータなしで正常に動作しますが、私はパラメータ(idとURL)を追加するとき、多少の誤差があります。bashからPHPスクリプトにパラメータを渡すには?

PHP Deprecated: Comments starting with '#' are deprecated in /etc/php5/cli/conf                      .d/mcrypt.ini on line 1 in Unknown on line 0 
Could not open input file: /var/www/dev/dbinsert/script/automatisation.php?                      id=1 

私はこのようなbashのからPHPスクリプトを実行します。

php /var/www/dev/dbinsert/script/automatisation.php?id=19&url=http://bkjbezjnkelnkz.com 

答えて

26

のようにそれを呼び出します。

php /path/to/script/script.php -- 'id=19&url=http://bkjbezjnkelnkz.com' 

また、使用するようにPHPスクリプトを変更parse_str()

parse_str($argv[1]); 

インデックス$_SERVER['REMOTE_ADDR']が設定されていない場合。


より高度な処理がgetopt()を必要とするかもしれませんが、parse_str()は作業それを得るためにquick'n'dirtyの方法です。

+0

うん!ありがとうTino – user420574

+0

どのようにPHPスクリプトにディレクトリを渡すと思いますか? – Michael

+1

@Michael、同じ方法で、 '$ argv'配列から読み込みます。また、糸のネクロマンシーも悪いです。 –

6

GETクエリパラメータをPHPコマンドラインインターフェイスに渡すことはできません。引数を標準コマンドライン引数として渡すか、$argc and $argv globalsを使用して読み込みます(GET/POSTパラメータを使用する必要がある場合)。curl/wgetでスクリプトを呼び出し、そのようにパラメータを渡します。ローカルWebサーバー。

これは、あなたが$argcとによって読み取られる引数を渡すことができる方法である( - 後続のすべての引数をスクリプトにしていないPHPインタプリタバイナリに行く必要があることを示し):

php myfile.php -- argument1 argument2

+1

php-cgiを使用している場合は、GETクエリパラメータを渡すことができます:) ここに例を示します:https://serverfault.com/questions/187025/how-to-pass-get-variables-to-a-php-script-コマンドライン経由で – Bastion

+0

@ Bastionの魔法のリンク、ありがとう! – icc97

4

- オプション1:php-cgi-

スクリプトを実行するには、 'php'の代わりに 'php-cgi'を使用します。

php-cgi -f /my/script/file.php id=19 myvar=xyz 

- オプション2:これは、あなたがそれで動作するように特別にPHPコードを変更する必要はありませんとして最も簡単な方法です -

場合は、Webサーバーを持っている場合PHPファイルは、コマンドラインで 'wgetコマンド' を使用することができ、Webサーバー上にある:

wget 'http://localhost/my/script/file.php?id=19&myvar=xyz' 

OR:

wget -q -O - "http://localhost/my/script/file.php?id=19&myvar=xyz" 

- PHPで変数へのアクセス -

をあなたはこのように、これらのパラメータにアクセスする1 & 2の両方のオプションで:

$id = $_GET["id"]; 
$myvar = $_GET["myvar"];