web-dev-qa-db-ja.com

bashからphpスクリプトにパラメーターを渡す方法は?

私は、phpスクリプトを実行するbashスクリプトを実行しました。パラメータがなくても正常に機能しますが、パラメータ(idとurl)を追加すると、いくつかのエラーが発生します。

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
23
user420574

それを次のように呼びます:

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() を使用すると簡単に動作します。

31
Tino Didriksen

GETクエリパラメータをPHPコマンドラインインターフェースに渡すことはできません。引数を標準のコマンドライン引数として渡し、 $argcおよび$argvグローバル を使用してそれらを読み取ってください。 、または(GET/POSTパラメータを使用する必要がある場合)curl/wgetを介してスクリプトを呼び出し、その方法でパラメータを渡します。ローカルWebサーバーを介してスクリプトにアクセスできる場合を想定しています。

これは、$argc$argvによって読み取られる引数を渡す方法です(-は、後続のすべての引数がPHPインタープリターバイナリではなく)スクリプトに渡されることを示します)。

php myfile.php -- argument1 argument2

6

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

スクリプトを実行するには、「php」の代わりに「php-cgi」を使用します。これを使用するためにphpコードを特別に変更する必要がないため、これが最も簡単な方法です。

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

-オプション2:Webサーバーがある場合-

PHPファイルがWebサーバー上にある場合は、コマンドラインで「wget」を使用できます。

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

または:

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

-phpの変数にアクセスする-

オプション1と2の両方で、次のようにこれらのパラメーターにアクセスします。

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