Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wywoływanie zewnętrznych poleceń - Problem
Forum PHP.pl > Forum > Przedszkole
cabana
Witam.
Mam problem ze skryptem który będzie uruchamiał serwer z rzędu www.
Próbowałem zrobić to przez system oraz exec ale żaden z tych sposobów nie zadziałał.
Proszę o pomoc przy rozwiązaniu tego problemu. sadsmiley02.gif
lord2105
a może tak co dokładnie ma uruchamiać?
cabana
normalnie uruchamiam serwer komendą w terminalu, która wygląda tak:

Kod
./serwer


mój kod wygląda tak:
przez system():

  1. <?
  2. system("cd /root/sc");
  3. system("./serwer");
  4. ?>


przez exec:
  1. <?
  2. exec("/root/sc/serwer");
  3. ?>


i żaden z powyższych sposobów nie uruchamia serwera angrysmiley.gif
lord2105
ssh2
cabana
nie działa Twój sposób sad.gif
masz może jakiś inny sposób?
erix
Pokaż najpierw, jak próbowałeś.
cabana
próbowałem zainstalować to shh2 w systemie ale wywala mi, że nie ma takiego pakietu ;/

udało mi się uruchomić serwer w taki sposób:

  1. <?
  2. $serwer = `/home/sc/serwer`;
  3. echo $serwer;
  4. ?>


ale skrypt się tak jak by zacina i kończy swoje działanie wtedy gdy program zakończy swoje działanie.
jak temu zapobiec?

zainstalowałem ubuntu i zrobiłem tak jak radził lord2105 ale nadal serwer nie uruchamia się tak jak chce ;/
erix
  1. $serwer = `/home/sc/serwer > &1`;
cabana
niestety nic się nie zmieniło sad.gif
skrypt wciąż oczekuje na zakończenie działania serwera aby wyświetlić logi ;/
mls
  1. $serwer = `/home/sc/serwer >/dev/null 2>&1 &`;
cabana
@mls

Twój sposób zadziałał świetnie. smile.gif
Teraz pozostała mi tylko kwestia pobrania pid uruchomionego procesu. Macie może jakieś sposoby? doradźcie jak tego dokonać.
Nie oczekuje od was gotowca tylko rady jakich funkcji lub czegoś użyć.

A więc po przeczytaniu wielu poradników i manuali napisałem coś takiego:

  1. <?php
  2. include('lib/config.php');
  3. $config['serwer_path'] = '/home/shoutcast/sc_'.$_SESSION['userID'];
  4. $config['serwer_filename'] = 'sc_serv_'.$_SESSION['userID'];
  5. $config['serwer_fileconfig'] = 'sc_serv.conf';
  6.  
  7. if ($_GET['action'] == 'start')
  8. {
  9. $serwer = @fsockopen($config['ip'], $serwer['port'], $errno, $errstr, 1);
  10. if (!$serwer)
  11. {
  12. @exec($config['serwer_path']."".$config['serwer_filename']." ".$config['serwer_path']."".$config['serwer_fileconfig']." >/dev/null &");
  13. $GLOBALS['template']['content'] = 'Serwer został uruchomiony.';
  14. }
  15. else
  16. {
  17. $GLOBALS['template']['content'] = 'Serwer już jest uruchomiony.';
  18. }
  19. }
  20. else if ($_GET['action'] == 'stop')
  21. {
  22. $serwer = @fsockopen($config['ip'], $serwer['port'], $errno, $errstr, 1);
  23. if ($serwer)
  24. {
  25. $pid = @exec("pgrep -x ".$config['serwer_filename']);
  26. @exec("kill -9 $pid");
  27. $GLOBALS['template']['content'] = 'Serwer został wyłączony.';
  28. }
  29. else
  30. {
  31. $GLOBALS['template']['content'] = 'Serwer nie jest uruchomiony.';
  32. }
  33. }
  34. else if ($_GET['action'] == 'restart')
  35. {
  36. $serwer = @fsockopen($config['ip'], $serwer['port'], $errno, $errstr, 1);
  37. if ($serwer)
  38. {
  39. $pid = @exec("pgrep -x ".$config['serwer_filename']);
  40. @exec("kill -9 $pid");
  41. @exec($config['serwer_path']."".$config['serwer_filename']." ".$config['serwer_path']."".$config['serwer_fileconfig']." >/dev/null &");
  42. $GLOBALS['template']['content'] = 'Serwer został zrestartowany.';
  43. }
  44. else
  45. {
  46. $GLOBALS['template']['content'] = 'Serwer nie jest uruchomiony.';
  47. }
  48. }
  49. else
  50. {
  51. $GLOBALS['template']['content'] = 'Nie rozpoznałem komendy.';
  52. }
  53.  
  54. include('template.php');
  55. ?>


Mój problem został już rozwiązany. Kod daje aby ktoś na przyszłość nie pisał podobnego tematu tylko żeby mógł zobaczyć jak to się robi.
Dziękuje wszystkim za pomoc i zaangażowanie smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.