Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Operatory Wykonania
Forum PHP.pl > Forum > Przedszkole
sebas211
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
mortus
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ą.
sebas211
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
mortus
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.
sebas211
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.
mortus
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.
sebas211
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...
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.