Я знаю, это может показаться немного странным, но мне нужно передать некоторые параметры в массив $ _POST. Подобно тому, как это делает apache или любой другой веб-сервер.
К сожалению, я не смог найти libapache2-mod-php5
для моего Ubuntu.
Это непросто. Вы можете вызвать двоичный файл 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
для простоты.
Я искал решение для этого и пришел, потому что это был первый хит в Google. Второй для меня был чем-то полезен для меня, потому что он имеет очень простое решение, если у вас есть доступ к скрипту 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'
Повеселись!
использовать завиток для публикации данных
curl –data "name = ii" "param1 = value1 & param2 = value2" http://test.com/sample.php