Это возможно?
Что я хочу сделать, это отправить:
run_app.exe -param 'test' -name 'tester'
в строку cmd Windows из PHP.
Возможно ли это или мне нужно написать службу Windows, которая каким-то образом запускается приложением?
Это возможно?
Что я хочу сделать, это отправить:
run_app.exe -param 'test' -name 'tester'
в строку cmd Windows из PHP.
Возможно ли это или мне нужно написать службу Windows, которая каким-то образом запускается приложением?
Или вы можете использовать:
$WshShell = new COM("WScript.Shell");
$oExec = $WshShell->Run(strCommand, [intWindowStyle], [bWaitOnReturn]);
Здесь вы можете найти параметры метода запуска: http://msdn.microsoft.com/en-us/library/d5fk67ky%28v=vs.85%29.aspx
А вот документ класса COM: http://www.php.net/manual/en/class.com.php
С помощью этого метода вы можете сделать гораздо больше в Windows :). Я использовал его из-за параметра [bWaitOnReturn], который не мог сделать никаким другим методом.
Вот проект, который позволяет PHP динамически получать и взаимодействовать с реальным терминалом cmd. Получите его здесь: https://github.com/merlinthemagic/MTS
После загрузки вы просто используете следующий код:
//if you prefer Powershell, replace 'cmd' with 'powershell'
$shellObj = \MTS\Factories::getDevices()->getLocalHost()->getShell('cmd');
$strCmd1 = 'run_app.exe -param "test" -name "tester"';
$return1 = $shellObj->exeCmd($strCmd1);
Возврат даст вам команду return OR error из cmd, как если бы вы сидели за консолью. Кроме того, вы можете выполнить любую команду, которая вам нравится, для $shellObj, среда поддерживается на протяжении всего жизненного цикла PHP-скрипта. Таким образом, вместо того, чтобы объединять команды в файл сценария, просто запускайте их одну за другой, используя метод exeCmd(), таким образом вы также можете обрабатывать возврат и любые исключения.