Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Operatory Wykonania, Operatory Wykonania Polecenia Systemowego
sebas211
post
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 5.03.2010

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


Witam!

Chcę uruchomić na serwerze (komputer w domu, ubuntu, z xampp) poprzez stronę internetową, np. serwer Counter Strike.
Robię to tak, że wpierw każę w formularzu wpisać coś potem wysłać to i po sprawdzeniu czy zostało to wpisane daje:
  1. $output = `./hlds_run -autoupdate -game cstrike +maxplayers 18 +exec server.cfg +map de_dust`;
  2. echo "<pre>$output</pre>";


Oczywiście serwer counter strike jest zainstalowany teraz chce go tylko uruchomić. Serwer zainstalowałem w katalogu z xampp, potem w katalogu root ale nic się nie dziaje (nie uruchamia się).
Po wysłaniu formularza nic się nie dzieje, nie pokazuje żadnego błędu. Gdy chce wyświetlić zawartość $output to nic nie pokazuje. Safe_mode mam wyłączone. Proszę o pomoc smile.gif
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
mortus
post
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Po pierwsze, czemu $output jest w gravisach, a nie apostrofach, albo cudzysłowach. Po drugie do wykonania polecenia systemowego służy właśnie funkcja exec(), której argumentem jest polecenie do wykonania otoczone cudzysłowami. Na przykład
  1. exec("./moj_program");
Po trzecie wcale nie trzeba instalować serwera gry w katalogach xampp'a, tylko należy ustawić zmienną środowiskową PATH, aby wskazywała na katalog z programem, który chcemy uruchomić (jak to zrobić). Po czwarte skrypt nie wyświetla błędów, bo wcale nie musi, ale jeśli dodasz na początku
  1. ini_set('display_errors', 1);
to te błędy się pokażą, bo bez wątpienia są.
Go to the top of the page
+Quote Post
sebas211
post
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 5.03.2010

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


Gdy używam funkcji exec nadal to samo czyli brak jakich kolwiek rezultatów.
Po dodaniu na początku kodu tych dwóch wersów pokazuje mi tylko błąd:

Notice: Undefined index: serwer in /var/www/index.php on line 5

serwer mam w katalogu www.

Wklejam tu cały plik index.php:

  1. <?php
  2. ini_set('display_errors',1);
  3.  
  4. $serwer=$_POST['serwer'];
  5.  
  6.  
  7.  
  8. if($serwer)
  9. {
  10. echo "zamowiono";
  11. echo exec("./hlds_run -autoupdate -game cstrike +maxplayers 18 +exec server.cfg +map de_dust");
  12.  
  13. }
  14. else
  15. {
  16. echo "Nie zaznaczyles pola";
  17. }
  18.  
  19. ?>
  20.  
  21.  
  22. <html>
  23. <head>
  24. <title>Zamow serwer</title>
  25. </head>
  26. <body>
  27. </br></br></br>
  28. <center><b>
  29. <form action="index.php" method="post">
  30. <input type="checkbox" name="serwer" value="serwer"/> <h4>Zaznacz aby zamowic serwer!</h4>
  31. <input type="submit" value="wyslij"/>
  32. </form>
  33.  
  34.  
  35. </center></b>
  36. </body>
  37. </html>


ps gdy uruchamiam serwer z terminala to wszystko działa pięknie

Ten post edytował sebas211 5.04.2010, 21:38:34
Go to the top of the page
+Quote Post
mortus
post
Post #4





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Przed wysłaniem formularza tablica $_POST jest pusta. Nie ma w niej zatem index-u 'serwer', o czym informuje Cię zwrócona uwaga. Można wyrzucić linie 5, a warunek w linii 9 zastąpić
  1. if(!empty($_POST['serwer']))
echo przy exec-u jest niepotrzebne. Instrukcja w exec ma być taka sama, jak instrukcja wprowadzona w konsoli (linii poleceń). Poza tym
Cytat
należy ustawić zmienną środowiskową PATH, aby wskazywała na katalog z programem, który chcemy uruchomić
Podałem link, gdzie opisane jest, jak się to robi.
Go to the top of the page
+Quote Post
sebas211
post
Post #5





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 5.03.2010

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


Czy mógłbyś mi pomóc, lub ktokolwiek inny z tą zmienną środowiskową PATH.
Dodaję taką linijkę w pliku .bashrc:

PATH=~/var/www/hlds_run:"${PATH}"

Nie działa mi dalej.

Czy mam coś dodać jeszcze do pliku php?

Na innej stronie znalazłem, że zmienna środowiskowa może wyglądać np tak:

PATH=$HOME/bin:$PATH:/usr/sbin

Proszę o pomoc.

Ten post edytował sebas211 7.04.2010, 21:16:43
Go to the top of the page
+Quote Post
mortus
post
Post #6





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


hlds_run to przecież nazwa programu, a PATH ma wskazywać na katalog, w którym ten program się znajduje. Czyli powinieneś dodać linijkę:
Kod
PATH=~/var/www:"${PATH}"
i tyle.
Go to the top of the page
+Quote Post
sebas211
post
Post #7





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 5.03.2010

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


Cytat(mortus @ 8.04.2010, 08:30:05 ) *
hlds_run to przecież nazwa programu, a PATH ma wskazywać na katalog, w którym ten program się znajduje. Czyli powinieneś dodać linijkę:
Kod
PATH=~/var/www:"${PATH}"
i tyle.


Tak też już wcześniej zrobiłem ale to też nic nie daje...
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 Aktualny czas: 19.08.2025 - 11:48