Передать переменную post в терминале в файл PHP [duplicate]

3 ответа

Это нелегко. Вы можете вызвать двоичный файл php-cgi и передать поддельный запрос POST. Но вам нужно будет настроить множество переменных среды CGI:

  echo  'var1 = 123 & amp; 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 для простоты.

16
ответ дан mario 15 August 2018 в 19:27
поделиться
  • 1
    Спасибо за ответ. PHP-Cgi работает для меня! – hades 13 April 2011 в 22:34
  • 2
    Вау здорово. Я признаю, что мне не удалось это сделать для себя: | – mario 13 April 2011 в 22:35
  • 3
    как это лучше, чем просто использовать cURL? – Neal 13 April 2011 в 22:37
  • 4
    @Neal: вопрос заключался не в вызове POST-запроса на URL-адрес, а непосредственно по скрипту. – mario 13 April 2011 в 22:39
  • 5
    то им просто путают, что это было abt lol – Neal 13 April 2011 в 22:39

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

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

  / *, если он запущен из командной строки, оберните параметры в $ _POST и $ _GET * / if (! isset ($ _ SERVER ["HTTP_HOST"])) {parse_str  ($ argv [1], $ _GET);  parse_str ($ argv [1], $ _POST);  }  

Эта небольшая часть кода делает трюк (вы можете решить, хотите ли вы использовать $ _GET или $ _POST или, как мне было нужно, оба. После изменения сценария вы можете позвонить это из командной строки, передающей ваши аргументы:

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

Удачи!

41
ответ дан Schlangi 15 August 2018 в 19:27
поделиться
  • 1
    Это работало как прелесть. Я фактически использую версию Eclipse от Zend. Я создал профиль отладки в соответствии с документацией Zend и добавил аргументы PHP Script. Я помещаю ваш код в начало скрипта PHP и альт! Он проанализировал аргументы, хранящиеся в $ argv [], в массив _POST. Много шума !!! – MikeyE 14 September 2013 в 01:26
  • 2
    Для меня это не работало (W10 OS): одинарные кавычки для массивов $ _GET / $ _ POST должны были быть заменены двойными кавычками. – mike rodent 24 May 2017 в 20:26
3
ответ дан user926400 15 August 2018 в 19:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: