2010-06-28 3 views
2

У меня есть приложение командной строки, которое необходимо выполнить из моего веб-приложения PHP. Скажем, команда выглядит следующим образом:PHP: выполнение приложения командной строки, которое запрашивает пользователей

foo -arg1 -arg2 -arg3 

Основываясь на определенных условиях, приложение командной строки предложит пользователю нажмите клавишу ввода (например, «Пожалуйста, нажмите клавишу ВВОД, чтобы продолжить.»).

Из моего приложения PHP, как мне выполнить командную строку И отправить ключ ввода в ответ на запрос?

Я развиваюсь на WAMP. Производственный код - LAMP.

+0

Иногда программы CLI имеют режим пакетного режима, который говорит им не задавать вопросы, если один из этих вариантов доступен, вы должны его использовать. Если это ваша собственная программа, вы можете рассмотреть возможность добавления опции. –

ответ

2

Для этого предназначена программа «да». Он сбрасывает бесконечный поток «y \ n» (или что бы вы ему рассказывали через аргументы) в программу. Он существует для этой цели (отвечая «да» на «вы хотите продолжить»).

shell_exec('yes | foo -arg1 -arg2 -arg3') 
+0

Похоже, что среда разработки OP - это Windows. Я думаю, что 'yes' is * nix only ... – grossvogel

-2

Вы попробовали echo "\n" > foo -arg1 -arg2 -arg3?

+0

Нет, не знаю. Как выполнить такую ​​команду из веб-приложения, чтобы он знал, что я пытаюсь запустить командную строку? Обычно я использую exec(). У вас есть echo(), который отображает вывод в браузер. – StackOverflowNewbie

+0

Нет, это было бы 'shell_exec ('echo" \ n "> ...')', я просто пропустил код php exec для краткости. Я думаю, что это должно быть 'shell_exec ('foo -arg1 ... | echo" \ n "')', хотя подумать об этом. – Kris

+0

Это должно быть «эхо» \ n "| foo ... ' –

1

Вам понадобится o pen a process handle и проанализировать вывод программ и записать соответствующий ответ в ответ.

Проверьте расширение expect, хотя это упростит работу.

1
$value = fgets(STDIN); 

Это позволит пользователю ввести в значение, которое вы можете получить доступ через $ значение.

+0

Из вопроса, похоже, что php-скрипт не запущен из командной строки ... – grossvogel