Ein neues Thema erstellen  Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 07.11.2003, 18:25 

Registriert: 07.11.2003, 18:18
Beiträge: 5
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_run
den 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


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 07.11.2003, 19:59 
AM.de Team
Benutzeravatar

Registriert: 23.11.2001, 00:00
Beiträge: 3842
Wohnort: Vor König Arthus
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

_________________
Der schwarze Ritter triumphiert immer...
WING-Clan


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 07.11.2003, 20:46 

Registriert: 07.11.2003, 18:18
Beiträge: 5
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... :-/


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 07.11.2003, 21:55 
AM.de Team
Benutzeravatar

Registriert: 23.11.2001, 00:00
Beiträge: 3842
Wohnort: Vor König Arthus
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

_________________
Der schwarze Ritter triumphiert immer...
WING-Clan


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 07.11.2003, 22:21 

Registriert: 07.11.2003, 18:18
Beiträge: 5
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


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 08.11.2003, 01:23 
AM.de Team
Benutzeravatar

Registriert: 23.11.2001, 00:00
Beiträge: 3842
Wohnort: Vor König Arthus
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_l
Und bei der Gelegenheit möchte ich nochmal darauf hinweisen, dass man einen Gameserver nicht als root startet!

_________________
Der schwarze Ritter triumphiert immer...
WING-Clan


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 08.11.2003, 10:25 
HLDS Team

Registriert: 24.09.2003, 17:08
Beiträge: 98
Wohnort: Hamburg
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

_________________
The only think neccessary for the triumph of evil is for good men to do nothing (Edmund Burke)


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 08.11.2003, 10:31 

Registriert: 07.11.2003, 18:18
Beiträge: 5
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.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 08.11.2003, 10:38 
HLDS Team

Registriert: 24.09.2003, 17:08
Beiträge: 98
Wohnort: Hamburg
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

_________________
The only think neccessary for the triumph of evil is for good men to do nothing (Edmund Burke)


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 08.11.2003, 12:34 

Registriert: 07.11.2003, 18:18
Beiträge: 5
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 


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 08.11.2003, 13:42 
HLDS Team

Registriert: 24.09.2003, 17:08
Beiträge: 98
Wohnort: Hamburg
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

_________________
The only think neccessary for the triumph of evil is for good men to do nothing (Edmund Burke)


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 11 Beiträge ] 


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de
Original Design von "[ Half-Life Admin Mod © Alfred Reynolds 2000-2003 ] - [ site design by Jägermeister ]"