Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как запустить выполнение программы.exe на сервере? [4]
Форумы портала PHP.SU » PHP » Программирование на PHP » Как запустить выполнение программы.exe на сервере?

Страниц (4): « 1 2 3 [4]
 

46. aRCHeR - 13 Апреля, 2010 - 16:31:20 - перейти к сообщению
А можно ли как-то реализовать ВСЕ это через PHP Shell? Однако
47. JustUserR - 13 Апреля, 2010 - 17:20:35 - перейти к сообщению
aRCHeR пишет:
А можно ли как-то реализовать ВСЕ это через PHP Shell?
Вы имеете в виду командные вызовы из PHP?
48. aRCHeR - 14 Апреля, 2010 - 15:52:59 - перейти к сообщению
Я как бы новичек Улыбка не особо понимаю суть вещей, но наверно я имею ввиду командные вызовы из PHP... ), и еще какие линукс команды нужны для запуска такого приложения, как hlds.exe? Однако
(Добавление)
А то я BOT http://itshaman[dot]ru/articles/7/komandy-linux нашел примерный список команд, но не могу разобратся какая из них подходит Огорчение
49. JustUserR - 15 Апреля, 2010 - 13:24:20 - перейти к сообщению
aRCHeR пишет:
И еще какие линукс команды нужны для запуска такого приложения, как hlds.exe?
Обычное PE-приложения работающее под windows не запустится под linux потому что исполняемыми файлами там являются ELF-файлы - они имеют сильно различающийся с PE-модулем загрузочный сектор и обращения к памяти Если вы хоитет запусктаь такие файлы то используйте wine
50. papick - 11 Июля, 2010 - 19:58:53 - перейти к сообщению
JustUserR пишет:
viktor6 пишет:
А под linux можно такое сделать?
А под linux это делается еще проще .............
Напишите более подробно задачу и постараемся вам помочь

задача:
проиграть звуковой файл на сервере (через колонки, подключенные к серверу) когда юзер нажмет на кнопку - ссылку на ХТМЛ странице
Вроде все простенько но никак не могу решить, почитал форум, пробовал
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. {$launch_str="playsound /home/******/****/www/www1/dtmf/1.ogg";
  3. popen($launch_str,"r");
  4. ?>

Так же пробовал создать bash и запускать его этим скриптом

на работает Недовольство, огорчение
сама комманда рlaysound /home/******/****/www/www1/dtmf/1.ogg
в терминале или при подключении удаленно по ССШ работает.

Ну, естественно речь идет о линукс-сервере с name-based virtual host под апачем, сам пых-пых установлен и работает.

подскажите пожалуйста что я делаю не так Улыбка
51. JustUserR - 12 Июля, 2010 - 15:16:33 - перейти к сообщению
papick пишет:
Вроде все простенько но никак не могу решить, почитал форум, пробовал
Скорее всего причиной проблемы с запуском консольной команды является указание неправильных базовых путей - или отсутствие прав доступа к соответсвущим объекам при вызове процессов от имени пользователя www-data Можете попробовать запустить команду system($launch_str) и посмотреть результат - также желательно отделить запускаемый дочерний процесс в отдельную ветку путем запуска его в фоновом режиме
52. papick - 13 Июля, 2010 - 01:21:59 - перейти к сообщению
JustUserR пишет:
papick пишет:
Вроде все простенько но никак не могу решить, почитал форум, пробовал
Скорее всего причиной проблемы с запуском консольной команды является указание неправильных базовых путей - или отсутствие прав доступа к соответсвущим объекам при вызове процессов от имени пользователя www-data Можете попробовать запустить команду system($launch_str) и посмотреть результат - также желательно отделить запускаемый дочерний процесс в отдельную ветку путем запуска его в фоновом режиме

Спасибо, помогло, оказывается www-data не имел права пользовать звук.
Смущение
Теперь первый вариант заработал. Ура!
JustUserR пишет:
также желательно отделить запускаемый дочерний процесс в отдельную ветку путем запуска его в фоновом режиме

Как это правильно сделать(написать)?

Усложняем задачу: можно ли проигрывать звук(по кругу) до тех пор, пока нажата кнопка(ссылка)?
53. JustUserR - 13 Июля, 2010 - 01:44:35 - перейти к сообщению
papick пишет:
Спасибо, помогло, оказывается www-data не имел права пользовать звук.
Теперь первый вариант заработал
Пожалуйста! При работе в unix-системах и особенно при администрировании deamon-сервисов в них - нужно проверять наличие прав доступа по эффективному пользователю от имени которого работает процесс
papick пишет:
Как это правильно сделать(написать)?
Для запуска в фоновом режиме используется синтаксис command 2>&1 >/dev/null & - а для переключения эффективного владельца процесса используется модуль web-сервера suexec или утилита sudo с соответствующими настройками
papick пишет:
Усложняем задачу: можно ли проигрывать звук(по кругу) до тех пор, пока нажата кнопка(ссылка)?
Для реализации такой задачи можно использовать два процесса - один из них будет работать в режиме daemon-сервиса от имени пользователя с достаточно высокими привелегиями и быть готовым к запуску звука Второй из них является CGI-скриптом и взаимодействует с клиентом динамически по следующему принципу - когда кнопка нажимается по запускается CGI-скрипт с комадой запуска звука а когда отпускается то команда остановки звука В зависимости от способа взаимодействия этот CGI-скрипт или посылает команды deamon-сервису через сигналы или разделенный файл/память - или же запускает процессы проигрывания звука в фоновом режиме а по приеме команды остановки завершает их
54. In1ernal Error - 07 Октября, 2010 - 19:05:34 - перейти к сообщению
В php я новичок, поэтому никак не получается запустить сервер CS.
Просмотрел всю тему, ни один из способов у меня не работает Огорчение

1.
PHP:
скопировать код в буфер обмена
  1. system("D:\Games\ServerPublic\ServerPublic\start.cmd");
- вообще ничего не происходит
2.
PHP:
скопировать код в буфер обмена
  1. $ft = popen ("D:/games/serverpublic/serverpublic/hlds.exe", "r");
-появляется процесс, занимает всего 4мб RAM, ничего больше не появляется
3.
PHP:
скопировать код в буфер обмена
  1. exec ("D:/games/serverpublic/serverpublic/hlds.exe");
- происходит то же что и в пункте 2

Через start.cmd вручную сервер отлично запускается:
CODE (htmlphp):
скопировать код в буфер обмена
  1. start /MIN/HIGH hlds.exe -console -game cstrike +port 27019 +ip 0.0.0.0 +map de_dust2 +maxplayers 30 -noipx +sv_lan 1 -insecure -master


Подскажите, что может быть не так?
55. JustUserR - 08 Октября, 2010 - 14:40:07 - перейти к сообщению
In1ernal Error пишет:
Подскажите, что может быть не так?
Причиной неправильной работы целевого процесса через комнду консолького запуска может являться отсутствие требуемого окружения для его функционирования - в то время как команды пакетного файла могут сформировать его должны образом а также провести отделение процесса в отдельную область
Кроме того в приведенном вами первом способе используются обратные слеши - которые интерпретируются в строке с двойными кавычками как управляющие последовательности
Одним из вариантом для запуска внешнего процесса с сохранением его окружения из пакетного файла - может быть такая команда
system("cmd /C \"start D:\\Games\\ServerPublic\\ServerPublic\\start.cmd\"") - которая также может подлежть дополнительному пакетному экранированию по адресу в случае содержания в нем пробела

 

Powered by ExBB FM 1.0 RC1