Команда PHP Exec – как передать ввод в ряд вопросов

У меня есть программа на моем Linux-сервере, которая задает одну и ту же серию вопросов каждый раз, когда она выполняется, а затем предоставляет несколько строк вывода. Моя цель – автоматизировать ввод и вывод с помощью php-скрипта.

Программа не предназначена для ввода ввода в командной строке. Вместо этого программа задает вопрос 1 и ждет ответа с клавиатуры, тогда программа задает вопрос 2 и ждет ответа с клавиатуры и т. Д.

Я знаю, как захватить вывод в массиве, написав: $ out = array (); Exec ( "мой / путь / программа", $ из);

Но как мне обрабатывать вход ? Предположим, что программа задает 3 вопроса и действительные ответы: left 120 n. Каков самый простой способ использования php для передачи этого ввода в программу? Могу ли я сделать это как-то на линии exec?

Я не php noob, а просто никогда не делал этого раньше. Увы, мой гуглинг идет по кругу.

Прежде всего, чтобы вы знали, что пытаетесь изобрести колесо. То, что вы действительно ищете, – это ожидание (1) , которое представляет собой утилиту командной строки, предназначенную для того, чтобы делать именно то, что вы хотите, без привлечения PHP.

Однако, если вы действительно хотите написать свой собственный PHP-код, вам нужно использовать proc_open . Вот несколько примеров хорошего кода при чтении из STDOUT и записи в STDIN дочернего процесса с использованием proc_open :

Наконец, есть модуль Expect PECL для PHP.

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

Просто добавьте аргументы в строку exec.

 exec("/path/to/programname $arg1 $arg2 $arg3"); 

… но не забудьте применить escapeshellarg() для каждого аргумента! В противном случае вы уязвимы для инъекционного вредоносного кода.

 $out = array(); //add elements/parameters/input to array string $execpath = "my/path/program "; foreach($out as $parameter) { $execpath += $parameter; //$execpath += "-"+$execpath; use this if you need to add a '-' in front of your parameters. } exec($execpath);