web-dev-qa-db-ja.com

PHPスクリプトでコマンドラインから$ _POSTにパラメーターを渡す方法は?

これは少し奇妙に聞こえるかもしれませんが、いくつかのパラメーターを$ _POST配列に渡す必要があります。 Apacheが行う方法、または他のWebサーバーと同様です。

残念ながら見つかりませんでしたlibapache2-mod-php5私のUbuntuのどこでも。

30
hades

それは簡単にはできません。 php-cgiバイナリを呼び出して、偽のPOSTリクエストをパイプで送ることができます。ただし、CGI環境変数の多くを設定する必要があります。

echo 'var1=123&var2=abc' | REQUEST_METHOD=POST  SCRIPT_FILENAME=script.php REDIRECT_STATUS=CGI CONTENT_TYPE=application/www-form-urlencoded php-cgi 

:不十分で、そのように動作しません。しかし、そのようなもの...


スクリプトにパッチを当てて、事前定義された環境変数から$ _POST配列をロードさせると、より簡単になります。

$_POST = parse_url($_SERVER["_POST"]);

次に、単純にするために_POST=var=123 php script.phpのように呼び出すことができます。

18
mario

これに対する解決策を探していて、Googleでの最初のヒットだったので、それを見つけました。 2つ目 は、PHPスクリプトにアクセスして変更できる場合は、非常に簡単な解決策があるため、どういうわけか私にとって便利でした。

スクリプトの先頭に次の行を挿入するだけです。

/* if started from commandline, wrap parameters to $_POST and $_GET */
if (!isset($_SERVER["HTTP_Host"])) {
  parse_str($argv[1], $_GET);
  parse_str($argv[1], $_POST);
}

この小さなコードがうまく機能します($ _GETと$ _POSTのどちらを使用するか、または私が必要とするように、両方を使用するかを決定できます。
スクリプトを変更した後、コマンドラインから引数を渡してスクリプトを呼び出すことができます:

php yourscript.php 'arg1=x&arg2=y'

楽しんで!

45
Schlangi

curlを使用してデータを投稿する
curl --data "name = ii" "param1 = value1&param2 = value2" http://test.com/sample.php

2
user926400