4


1

クエリ文字列パラメーターをPHPバイナリに渡す方法は?

スクリプトを処理するために(CGIを介して)PHPバイナリを呼び出すWebサーバーを開発しています。

これが問題です。

PHPスクリプトはコマンドラインパラメーターを取得していません。 たとえば、クライアントが path / to / file.php?test = value`をリクエストした場合、 $ _GET`配列は空です。

環境変数( QUERY_STRING)でパラメーターを渡そうとしましたが、まだ表示されません。

クエリ文字列パラメーターをPHPアプリケーションに渡すにはどうすればよいですか?

4 Answer


4


command line_パラメーターまたは $ _ GET_パラメーターについて話していますか? それらは同じではありません。

Webブラウザーを使用する場合、「$ _ GET」が使用されます。 しかし、 / path / to / file.php arg1 arg2`のようなコマンドライン引数を渡す場合、 $ argv`を使用する必要があります(そして、 `$ argc`には要素の長さが含まれます)。

`$ argv [0]`には常に実行中のファイル、この例では `/ path / to / file.php`が含まれています。 +この場合、「$ argv [1]」は「arg1」であり、「$ argv [2]」は「arg2」です。 したがって、「$ argc」には3が含まれます。

役立つリソース:


4


PHPにはさまざまなSAPIがあります。 それらの1つはcli SAPIです。これは明らかに使用しているもので、cli SAPIは$ _GET、$ _ POSTを設定しません…​ コマンドラインスクリプト用だからです。

あなたの場合、PHP cgi SAPIが必要です。 (例えば、シェバンで php`を php-cgi` [1]に置き換える必要があります)

[1] In most distribuitons it’s called php-cgi, if you compile PHP 自分でcgiを有効にする必要があります。


3


DOMとは呼ばないでください»QUERY_STRINGを使用したCGIスクリプトのテスト(PHP) cliモード経由で渡された環境変数を解析するには、 `parse_str`を使用する必要がある場合があります-Linuxターミナルの例:

$ QUERY_STRING="aa=bb&cc=dd" php -r 'parse_str(getenv("QUERY_STRING"),$_GET); print_r($_GET);'
Array
(
    [aa] => bb
    [cc] => dd
)


1


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

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

php-cgi -f /my/script/file.php a=1 b=2 c=3
  • オプション2:Webサーバーがある場合-*

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

wget 'http://localhost/my/script/file.php?a=1&b=2&c=3'

OR:

wget -q -O - "http://localhost/my/script/file.php?a=1&b=2&c=3"
  • PHPの変数へのアクセス-*

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

$a = $_GET["a"];
$b = $_GET["b"];
$c = $_GET["c"];