2016-12-01 3 views
0

Я хотел бы поместить данные в поток ввода PHP php://input, чтобы я мог вернуть его, когда я звоню file_get_contents("php://input");.Вставить в поток ввода php (php: // input)

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

Как установить php://input?

+0

Это все в руководстве. php: // ввод доступен только для чтения. Он содержит тело необработанного запроса. Единственный способ повлиять на содержимое входа php: // - сделать HTTP-запрос, который заполняет тело запроса данными, которые вы хотите представить на PHP. http://php.net/manual/en/wrappers.php.php – GordonM

ответ

1

Просто введите команду, которая вызывает PHP, вставлять входные данные перед вызовом вашей команды.

возможно используя трубы?

кроме того, вы можете изменить существующий код, чтобы он не читает из ввода, но вместо того, чтобы от параметра, как это:

Вместо этого:

function current_function(){ 
    $a = file_get_contents("php://input"); 
    # do stuff with $a 
} 

попробовать это:

function do_thing_before_current_function($a){ 
    $STDIN = file_get_contents("php://input"); 
    # do stuff to pre-process STDIN 
    current_function($STDIN); 
} 
function current_function($a){ 
    # do stuff with $a 
} 

Это помогает сделать ваш дизайн более надежным.

Кроме того, если вы не можете изменить код, попробуйте трубопроводов вещи в PHP скрипт в вашей Баш оболочки:

$ echo "input_here" | php your_script_name.php 

или, если в Windows, выполните следующие действия:

C:\> \path\to\php.exe \path\to\your_script_name.php < example_input_content.txt 

Надеюсь, это поможет!