AdminMod.de https://www.adminmod.de/ |
|
Linux - HL-Server von jedem Verzeichnis aus starten https://www.adminmod.de/viewtopic.php?t=7942 |
Seite 1 von 1 |
Autor: | Dakapo [ 07.11.2003, 18:25 ] |
Betreff des Beitrags: | Linux - HL-Server von jedem Verzeichnis aus starten |
Hallo! Ich versuche mich gerade an der Installation eines HL-Servers unter Linux, welchen ich über eine Webseite per PHP starten möchte. Dafür verwende ich den PHP-Befehl: shell_exec( "sudo /home/dakapo/halflife/files/hlds_l/hlds_run -game cstrike +maxplayers 16 +map de_dust +port 27015" ); Nun startet der Server leider nicht und das liegt scheinbar an etwas grundsätzlichem. Ich kann den Server nämlich leider nur starten, wenn ich mich gerade im hlds_l selbst befinde, wenn ich von einem anderen Verzeichnis aus über den Befehl Code: /home/dakapo/halflife/files/hlds_l/hlds_runden Server starten möchte kommt die folgende Fehlermeldung: /home/dakapo/halflife/files/hlds_l/hlds_run: line 53: ./hlds: Datei oder Verzeichnis nicht gefunden Kann mir jemand weiterhelfen? Ich bin auch einer von diesen absoluten Linux-Anfängern... Vielen Dank im Voraus! Dakapo |
Autor: | [WING] Black Knight [ 07.11.2003, 19:59 ] |
Betreff des Beitrags: | |
Dann öffne doch mal die hlds_run in einem Texteditor und suche nach der Zeile mit ./hlds und mach daraus /home/dakapo/halflife/files/hlds_l/hlds |
Autor: | Dakapo [ 07.11.2003, 20:46 ] |
Betreff des Beitrags: | |
Hallo Black Knight! Danke für Deine schnelle Antwort. Ich habe die Zeile angepasst und bekomme aber leider gleich die nächste Fehlermeldung: Auto-restarting the server on crash /engine_i386.so: cannot open shared object file: No such file or directory Eine Zeile zur engine_i386.so finde ich in der hlds_run allerdings nicht... :-/ |
Autor: | [WING] Black Knight [ 07.11.2003, 21:55 ] |
Betreff des Beitrags: | |
Dann sind da wohl noch ein paar relative Pfade versteckt. Versuch es mal mit: Code: export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH Code: export LD_LIBRARY_PATH=/home/dakapo/halflife/files/hlds_l:$LD_LIBRARY_PATH |
Autor: | Dakapo [ 07.11.2003, 22:21 ] |
Betreff des Beitrags: | |
hmmm, das war es leider immernoch nicht: Auto-restarting the server on crash /root/engine_i386.so: cannot open shared object file: No such file or directory |
Autor: | [WING] Black Knight [ 08.11.2003, 01:23 ] |
Betreff des Beitrags: | |
Stimmt funzt bei mir auch nicht. OK, dann einfach aber unschön. export-Zeile wieder in den Urzustand bringen und in der Zeile davor schreiben: Code: cd /home/dakapo/halflife/files/hlds_lUnd bei der Gelegenheit möchte ich nochmal darauf hinweisen, dass man einen Gameserver nicht als root startet! |
Autor: | GriZZly [ 08.11.2003, 10:25 ] |
Betreff des Beitrags: | |
Moin, den export LD_LIBRARY_PATH würde ich getrost vergessen. wenn du rootzugriff hast, trag den pfad in die /etc/ld.so.conf ein und mach ein ldconfig dann hast du den lib pfad immer gesetzt. so funktioniert es mit php: Code: $command = "cd $scriptpath; ./$scriptname $scriptparam"; shell_exec("$command");es gibt allerdings eine einschränkung, der apache hat wohl eine andere uid als der gameserver. user nobody führt zum crash des hlds. dann hast du 3 möglichkeiten. entweder du arbeitest mit posix-funktionen oder du setzt den apache auf den gameserver user oder du trägst für sudo auch die richtigen berechtigungen ein und arbeitest mit sudo. ich hab es mit posix realisiert evtl. exploids kannst du mit escapeshellargs escapeshellcmds abfangen. das script sollte so sicher wie möglich sein. GruZZ GriZZ |
Autor: | Dakapo [ 08.11.2003, 10:31 ] |
Betreff des Beitrags: | |
Hallo nochmal! Was genau ist posix? Ich habe jetzt die hlds_run angepasst, wie es Black Knight vorgeschlagen hat und das hat auch wunderbar funktioniert mit dem starten. Ein kleines Problem habe ich jetzt aber immernoch. Leider geben sämtliche PHP-Befehle für die Ausführung von System-Befehlen auch die Ausgabe zurück. Beim Start des HL-Servers ist das aber ja leider sehr viel. Hast Du einen Tipp für mich, wie ich das unterbinden kann? Ansonsten läuft das PHP-Skript so tierisch lange. |
Autor: | GriZZly [ 08.11.2003, 10:38 ] |
Betreff des Beitrags: | |
Hi, schau ins Manual von PHP http://de.php.net/manual/de/ref.posix.php dort steht mehr über posix und was du damit machen kannst. Code: $command = "cd $scriptpath; ./$scriptname $scriptparam".' > /dev/null 2>&1 & echo $!'; exec($command, $array, $var)dann hast du in $array[0] deine pid stehen. in $var steht 0 oder 1 jenachdem ob der aufruf erfolgreich war oder nicht. GruZZ GriZZ |
Autor: | Dakapo [ 08.11.2003, 12:34 ] |
Betreff des Beitrags: | |
Super! Das hat funktioniert. Der Server startet jetzt einwandfrei und das PHP-Skript ist nach wenigen Sekunden fertig. Magst Du mir noch verraten wofür das hier steht: Code: > /dev/null 2>&1 |
Autor: | GriZZly [ 08.11.2003, 13:42 ] |
Betreff des Beitrags: | |
Hi, Code: > /dev/null 2>&1 & echo $!Die Standardausgabe stdout (filedescriptor 1) wird nach /dev/null (vehindert die Datenausgabe) umgeleitet, dann wird Standardfehler stderr (filedescriptor 2) auf die gleiche Datei umgeleitet. Beide Ausgaben verschwinden sozusagen. Die Reihenfolge ist wichtig. Das echo $! gibt dir dann alle Variablen zurück. In diesem Fall die PID. GruZZ GriZZ |
Seite 1 von 1 | Alle Zeiten sind UTC+01:00 |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |