|
|
|
Supreme Being
      
участник
Last Login: 12.06.2008 11:23
Сообщ.: 96,
Visits: 535
|
|
Доброе время суток!
Подскажите, пожалуйста, как из PHP, при выполнении скрипта, запустить *.exe приложение.
Это обычное приложение, которое написано на delphi, надо в определенный момент его запускать.
Заранее благодарен!
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| Для запуска внешних программ в PHP есть функции exec(), system(), passthru(). Тебе скорее всего нужна именно exec(). Только непонятно как ты будешь запускать программу написанную на Delphi (виндовый exe) под Unix? В Unix совсем другой формат исполняемых файлов.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 12.06.2008 11:23
Сообщ.: 96,
Visits: 535
|
|
| Спасибо! А про *.exe, сервер на Windows'е стоит, поэтому и приложение будет работать. Еще раз спасибо!
|
|
|
|
|
Supreme Being
      
участник
Last Login: 12.06.2008 11:23
Сообщ.: 96,
Visits: 535
|
|
Что-то не все так просто, как думал.
А какие-нибудь надо передавать параметры в exec?
Я в exec указал полный путь к приложению, но при выполнении скрипта ничего не происходит. Если что, то это обычное визуальное приложение, которое после запуска должно работать само по себе.
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| Твое приложение наверняка запускается, но его интерфейса ты никогда не увидишь. Дело в том что процесс веб-сервера выполняется как системный сервис, которые не могут создавать окна и вообще взаимодействовать с пользователем. На это есть несколько причин. 1) Сервис выполняется всегда, даже если ни один пользователь не вошел в систему. А если в системе нет ни одного пользователя, то кому показывать UI? Или хуже - а если пользователей несколько, кому из них показывать UI? Кроме того обычно веб-сервер запущен на отдельной машине на которой никто не работает и нет никакого смысла показывать UI на сервере. 2) Сервис взаимодействующий с пользователем может быть более уязвим для атак. На самом деле есть опция позволяющая системному сервису запускать оконные приложения. В свойствах сервиса надо поставить галочку "Allow service to interact with desktop". Но прежде чем делать это хорошо подумай правильно ли ты поступаешь потому что запуск GUI приложений сервисом может говорит о том что ты делаешь что-то не то и тебе следует поискать другие способы решения своей задачи.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 12.06.2008 11:23
Сообщ.: 96,
Visits: 535
|
|
То что будет выводиться - это не страшно.
А как выполнить через exec() вот это:
[root@Mutant iface]# cat 1.sh
#!/bin/bash
echo "qqq" > 111qwe
1.sh в нем команда записана..
Я делаю exec('1.sh'); и никакого результата..
(Это уже под Linux)
|
|
|
|
|
Supreme Being
      
участник
Last Login: 12.06.2008 11:23
Сообщ.: 96,
Visits: 535
|
|
| Разобрался с проблемой. Не было прав для выполнения файла на Linux.
|
|
|
|