Подтвердить что ты не робот

Как передать параметры из командной строки в $_POST в php-script?

Я знаю, это может показаться немного странным, но мне нужно передать некоторые параметры в массив $_POST. Подобно тому, как это делает apache или любой другой веб-сервер.

К сожалению, я не смог найти libapache2-mod-php5 где-нибудь для моего Ubuntu.

4b9b3361

Ответ 1

Это нелегко. Вы можете вызывать двоичный код 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 

Примечание. Недостаточно, не работает. Но что-то в этом роде...


Это, конечно, проще, если вы просто скопируете script и загрузите массив $_POST из предопределенной переменной среды.

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

Затем вы можете вызвать его как _POST=var=123 PHP скрипт.php для простоты.

Ответ 2

Я искал решение для этого и пришел, потому что это был первый хит в Google. Второй вариант для меня был чем-то полезен для меня, потому что он имеет очень простое решение, если у вас есть доступ к PHP script и его можно изменить.

Просто вставьте следующие строки в начало script:

/* 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 или, как мне было нужно, оба.
После изменения script вы можете вызвать его из командной строки, передавая ваши аргументы:

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

Удачи!

Ответ 3

использовать завиток для публикации данных
curl --data "name = ii" "param1 = value1 & param2 = value2" http://test.com/sample.php