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

Я знаю, это может показаться немного странным, но мне нужно передать некоторые параметры в массив $ _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