Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Wywoływanie zewnętrznych poleceń - Problem
cabana
post 14.12.2010, 18:04:23
Post #1





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 25.05.2010

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
lord2105
post 14.12.2010, 18:07:50
Post #2





Grupa: Zarejestrowani
Postów: 380
Pomógł: 59
Dołączył: 24.04.2010
Skąd: London

Ostrzeżenie: (0%)
-----


a może tak co dokładnie ma uruchamiać?


--------------------
40% rozwiązań znajduje się tutaj.
59,9% tutaj.

Jeśli pomogłem rozwiązać Twój problem wciśnij
Go to the top of the page
+Quote Post
cabana
post 14.12.2010, 18:13:06
Post #3





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 25.05.2010

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
lord2105
post 14.12.2010, 18:28:02
Post #4





Grupa: Zarejestrowani
Postów: 380
Pomógł: 59
Dołączył: 24.04.2010
Skąd: London

Ostrzeżenie: (0%)
-----


ssh2


--------------------
40% rozwiązań znajduje się tutaj.
59,9% tutaj.

Jeśli pomogłem rozwiązać Twój problem wciśnij
Go to the top of the page
+Quote Post
cabana
post 14.12.2010, 19:28:02
Post #5





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 25.05.2010

Ostrzeżenie: (0%)
-----


nie działa Twój sposób sad.gif
masz może jakiś inny sposób?
Go to the top of the page
+Quote Post
erix
post 14.12.2010, 19:40:44
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Pokaż najpierw, jak próbowałeś.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
cabana
post 16.12.2010, 01:27:20
Post #7





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 25.05.2010

Ostrzeżenie: (0%)
-----


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 ;/
Go to the top of the page
+Quote Post
erix
post 16.12.2010, 13:13:29
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




  1. $serwer = `/home/sc/serwer > &1`;


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
cabana
post 16.12.2010, 19:09:52
Post #9





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 25.05.2010

Ostrzeżenie: (0%)
-----


niestety nic się nie zmieniło sad.gif
skrypt wciąż oczekuje na zakończenie działania serwera aby wyświetlić logi ;/
Go to the top of the page
+Quote Post
mls
post 17.12.2010, 00:34:20
Post #10





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


  1. $serwer = `/home/sc/serwer >/dev/null 2>&1 &`;


--------------------
Go to the top of the page
+Quote Post
cabana
post 17.12.2010, 20:04:42
Post #11





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 25.05.2010

Ostrzeżenie: (0%)
-----


@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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.04.2024 - 06:16