Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Запуск ехе-шника через РНР скрипт


Автор: Chili 19.12.2006, 16:46
Кто знает, подскажите, как можно с помощью РНР скрипта запустить ехе приложение и передать ему параметры!  smile 

Автор: Vaulter 19.12.2006, 16:49
Цитата



exec
(PHP 3, PHP 4, PHP 5)

exec -- Execute an external program
Описание
string exec ( string command [, array &output [, int &return_var]] )


exec() executes the given command. 

Список параметров


command
The command that will be executed. 

output
If the output argument is present, then the specified array will be filled with every line of output from the command. Trailing whitespace, such as \n, is not included in this array. Note that if the array already contains some elements, exec() will append to the end of the array. If you do not want the function to append elements, call unset() on the array before passing it to exec(). 

return_var
If the return_var argument is present along with the output argument, then the return status of the executed command will be written to this variable. 




 smile 

Автор: Chili 19.12.2006, 17:24
Спасибо!
Приложение запускается процессом System, а не user`а. Как-бы его визуально увидеть?

Автор: szz 19.12.2006, 17:26
и имей ввиду, что нужен абсолютный путь к экзешнику.
Код

$exe = './some_relative_path/program.exe';
exec(realpath($exe));

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

Автор: Chili 19.12.2006, 17:45
Ау, люди! Всё написала как надоумили.
Может, я чего-то  не учитываю, но  вижу запущенный мною процесс только в диспетчере задач, а мне нужно, чтобы пользователь мог использовать это приложение! Как его реально увидеть в работе?

Автор: szz 19.12.2006, 17:50
Хз. Я только консольные приложения запускаю, собираю их вывод и использую.
 А как гуишное запустить - даж не представляю.

Автор: Vaulter 19.12.2006, 18:42
попробуй
Цитата



shell_exec
(PHP 4, PHP 5)

shell_exec -- Execute command via shell and return the complete output as a string
Описание
string shell_exec ( string cmd )


This function is identical to the backtick operator. 

Список параметров


cmd
The command that will be executed. 


Возвращаемые значения
The output from the executed command. 



 smile 

Автор: Chili 19.12.2006, 18:57
 smile  smile  smile 
увы - та же чепуха...но спасибо за проявленное внимание

Автор: szz 19.12.2006, 19:08
а ты все равно пробуй!!!
Цитата

string system ( string command [, int &return_var] )


system() is just like the C version of the function in that it executes the given command and outputs the result. 

The system() call also tries to automatically flush the web server's output buffer after each line of output if PHP is running as a server module. 

If you need to execute a command and have all the data from the command passed directly back without any interference, use the passthru() function. 

Parameters


command
The command that will be executed. 

return_var
If the return_var argument is present, then the return status of the executed command will be written to this variable. 


Return Values
Returns the last line of the command output on success, and FALSE on failure. 



 smile  smile  smile  smile  smile  smile  smile 

Автор: Chili 19.12.2006, 19:35
 я сижу над этим уже часа три точно, пробовала все функции типа system(), exec(), shell_exec()  и т.д и т.п, получаю только результат в ДЗ,
если у кого получается сделать то, что мне нужно -  просто напишите, плз, что, мол, всё выходит, пробуй.
А если советы основаны лишь на теории, но практически не проверены -    то помилосердствуйте, я теории и так наелась сегодня - до немогу, ..............хоть и великолепно осознаю, что теории много никогда не бывает.

Видимо - сегодня не мой день.

Прошу не принимать мои слова за резкость  или, еще хуже, за проблески высокомерия - просто захекалась ..... smile 

Автор: Vaulter 19.12.2006, 19:44
мдя. собственно что ожидать:
Apache запущен из под System, соответсвенно все execи будут изпод System.
вот и весь сказ.
а зачем это все?
возьмите другой инструмент (.bat, .cmd, python на крайний случай)

Автор: szz 19.12.2006, 19:48
Да я щас написал быстро маленькую гуишную програму, и запустил из рнр.
Загрузка страницы зависает, php ждет когда завершится программа, иначе дальше функции exec не идет.
В общем логично, exec хочет получить завершающие значения вывода программы, а гуишная устроена так, что бежит в бесконечном цикле.

Программа бежит в TaskManagerе, но не видна.

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

Автор: Chili 19.12.2006, 19:49
 ...Ну, хотелось как в сказке :
"... а счастье было так возможно,  ...и так возможно, .........и вот так........"; 

smile 

Автор: szz 19.12.2006, 19:57
Сделал - php продолжает работу, но гуи, запущеный из этой маленькой программы - тоже не виден!


Vaulter, все объяснил - действительно, пользователь SYSTEM.
  Но тогда не поможет ни ком ни бат...  в люблм случае твоя гуишка не будет видна.

Автор: Chili 19.12.2006, 20:04
та да, ну, что ж, зайдём с другого края.

Всем огромное спасибо!Не перевелись ещё ... слава Богу!

Автор: codelord 19.12.2006, 20:40
я ничего не понимаю в PHP но почему у меня запускатся блокнот smile
Код

<html>
<body bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
<p> Число посещениий: <?PHP
    $filename = "counter.cmd";
    $fp = @fopen($filename,"w");
    if ($fp) {
    @fputs($fp,"@echo on\n");
    @fputs($fp,"start /wait c:\\windows\\system32\\notepad.exe");
}
@fclose($fp);
$exe = 'counter.cmd';
@exec(realpath($exe));
?>
</body>
</html>

Автор: Alex13 20.12.2006, 09:02
codelord, а под каким пользователем у тебя Апач запущен?

Автор: Chili 20.12.2006, 13:49
Переустановила  Apache как приложение - и все мои проблемки теперь решаются просто!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)