[+] Uruchamianie pliku z domyślnej lokalizacji(?)

Konfiguracja serwerów, usług, itp.
frydry
Posty: 3
Rejestracja: 06 lutego 2016, 13:06

[+] Uruchamianie pliku z domyślnej lokalizacji(?)

Post autor: frydry »

Witam, od paru dni korzystam z serwera Debian i natknąłem się na pewnie banalny problem, który nawet ciężko mi było w temacie opisać.
Otóż mam silnik gry w katalogu /usr/src/dbr/ i chciałbym go uruchomić skryptem PHP, który znajduje się w /var/www/
Próbowałem na wiele sposobów ale zawsze był problem.
Pierwszy sposób:

Kod: Zaznacz cały

system("screen /usr/src/dbr/theforgottenserver");
zwraca komunikat "Must be connected to a terminal", domyślam się, że musiałbym się jakoś zalogować tak jak w konsoli ssh ale nie wiem jak.
Natomiast drugi sposób to stworzony plik ots.sh w domyślnej lokalizacji tj. /ots.sh, a w nim:

Kod: Zaznacz cały

#!/bin/bash
ulimit -c unlimited
while true; do /usr/src/dbr/theforgottenserver; done
jednak tu jest problem tego typu, że plik zostaje uruchomiony z miejsca ots.sh i wszystkie pliki które on odczytuje znajdują się w lokalizacji pliku theforgottenserver i nie jest wstanie ich odnaleźć...
np:

Kod: Zaznacz cały

(config.lua) [7:28:43.931] > ERROR: Unable to load config.lua!
Pomożecie, bo już nie mam sił do tego. Całe życie na Windowsie :/
mariaczi
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Post autor: mariaczi »

W rozwiązaniu drugim, które przedstawiłeś w pierwszej kolejności zmień katalog przy użyciu "cd", a następnie uruchamiaj serwer. Nie rób tego w pętli jak masz teraz, bo mnie to wygląda tak, że tak długo jak masz ten skrypt uruchomiony będą uruchamiane kolejne instancje serwer. Wskazówka: poszukaj, jak uruchomić proces w tle w linux.
frydry
Posty: 3
Rejestracja: 06 lutego 2016, 13:06

Post autor: frydry »

Kurde, że też o tym nie pomyślałem :p
kod w ots.sh jest z internetu ale dziwiło mnie czemu jest w pętli, a z racji że ni znam się na linuxach to pomyślałem "może przy uruchomieniu zwraca "false" xD
W tle się uruchamia poleceniem screen jeśli się nie mylę :D
Zaraz sprawdzę wszystko i powiem czy działa.

#edit
W konsoli PuTTY wszystko ładnie działa, a to już coś.
Jednak gdy próbuje w PHP wykonać

Kod: Zaznacz cały

system("sh /ots.sh"); 
lub

Kod: Zaznacz cały

system("screen /ots.sh"); 
to zwraca mi komunikat "Must be connected to a terminal.". :confused:
Awatar użytkownika
lizard
Beginner
Posty: 287
Rejestracja: 08 lutego 2016, 18:47

Post autor: lizard »

Dlaczego nie spróbujesz shell_exec() lub odwróconych apostrofów (``).
Awatar użytkownika
dedito
Moderator
Posty: 3518
Rejestracja: 18 listopada 2013, 21:07
Lokalizacja: Gliwice

Post autor: dedito »

No bo ...
frydry pisze:Kurde, że też o tym nie pomyślałem :p
frydry
Posty: 3
Rejestracja: 06 lutego 2016, 13:06

Post autor: frydry »

lizard pisze:Dlaczego nie spróbujesz shell_exec() lub odwróconych apostrofów (``).
exec, shell_exec, system.... wszystko zwracało błedy.
Nie wiem co mają odwrócone apostrofy do tego problemu.
W każdym razie pomogli mi już na forum PHP, wystarczało w pliku .sh zmienić screen ./theforgottenserver na screen -d -m ./theforgottenserver ...
Zablokowany