PHP 5.2.13 в Windows 2003
Я использую команду DOS Start / B для запуска фонового приложения с помощью PHP-функции popen ():
popen("start /B {$_SERVER['HOMEPATH']}/{$app}.exe > {$_SERVER['HOMEPATH']}/bg_output.log 2>&1 & echo $!", 'r');
Функция popen () запускает процесс cmd.exe, который выполняет указанную команду; однако, если команда не выполняется (например, {$ app} .exe не существует или заблокирована в приведенном выше примере), процесс cmd.exe никогда не возвращается, и в результате PHP зависает на неопределенное время.
Вызов сбойной команды DOS напрямую с помощью командной строки приводит к появлению сообщения об ошибке, которое требует нажатия кнопки ОК.
Я предполагаю, что это требование подтверждения ошибки - это то, что мешает процессу cmd.exe вернуться в PHP как из командной строки (с использованием CGI и CLI), так и из Интернета (с использованием обработчика Apache 2.0 с Apache 2.2).
Есть ли способ написать команду DOS или настроить сервер или приложение cmd.exe для возврата ошибки DOS исходящему вызову вместо ожидания подтверждения?