PDA

View Full Version : TS2 per PHP-Script starten


tenshinhan
30-08-2002, 01:36
Ich möchte den TS2-Server per PHP Script im Browser starten und stopen. Die Rechte für alle Serverdatein hab ich auf den www user umgestellt. Wenn ich dies mit der Anweisung system in PHP aufrufe sehe ich als Anweisung auch das "Starting TeamSpeak 2 Server Daemon 78 o". Wenn ich dann n unter linux checke ...ist er nicht gestartet. Am user an sich kanns nicht liegen- Wenn ich in der konsole per su mich als www user anmelde, kann er das auch starten. PHP ist auch richtig konfiguriert, da ich andere datein auch schon per php starten kann.

FlaMinGDoG
04-09-2002, 19:13
das problem wurde damals schon bei ts1 diskutiert aber ich hab leider keine ahnung ob (bzw wie) es gelöst wurde...

jedoch frage ich dich einfach mal ob php eigentlich "fähig" ist dauerhafte prozesse zu starten (ich arbeite kaum mit exec bzw system (oder wie der befehl auch heisst :P))?
ich könnte mir nämlich gut vorstellen dass php alle noch laufenden prozesse beendet wenn es seinen eigenen schliesst (sobald die seite fertig geladen ist)


aber wie gesagt, so gut kenn ich mich mit der funktion nicht aus und jetzt noch das startscript auf potentielle leaks zu durchsuchen (denke kaum dass da ein fehler ist) hab ich auch keine lust

tenshinhan
04-09-2002, 21:43
Es gibt kein Problem mit PHP ..ich kann damit auch Problemlos verschiedene Gameserver starten, jedoch TS2 will irgendwie nicht.,

Krackman
05-09-2002, 21:25
Hi,

ich denke mal du versuchst es jetzt mit

system('/pfad/zu/tss/server_linux start');

versuch mal statt system shell_exec

shell_exec('/pfad/zu/tss/server_linux start');

Das Problem hatte ich auch beim starten von UT Servern,
die Startanzeige kam, aber der Server war nicht up.

tenshinhan
05-09-2002, 21:51
thx ..ich probiers mal

prorusher
07-09-2006, 17:02
ich bekomme immer folgende Fehlermeldung beim Aufruf der PHP datei


Warning: shell_exec() [function.shell-exec]: Cannot execute using backquotes in Safe Mode in /srv/www/web1/html/server/pub.php on line 2

die dateien liegen im selben ordner

was mache ich falsch ?

Inhalt pub.php

<?php
shell_exec("pub start")
?>

gruss

samy

Cyrus
07-09-2006, 17:10
Cannot execute using backquotes in Safe Mode
Hast du dich denn mal über den "Safe Mode" informiert?

freedom
30-04-2007, 00:29
sorry das ich das wieder aufwärme ;) aber gibts da jetzt ne Lösung?

openFTP
03-05-2007, 15:14
die lösung hat Cyrus gepostet ;)

hannibal_23
06-07-2007, 11:56
die lösung hat Cyrus gepostet ;)

Hm...
Ich habe das Forum durchsucht, aber nichts gefunen.

Ich bin der englischen Sprache nicht soooo mächtig.

Möchte halt TS ab und anschalten können über meine Seite.

Ein Tip zur Suche wäre nicht schlecht (hoffentlich kein englisch :( )

Germeshausen.de
06-07-2007, 14:47
Warum schaltest du deinen TS Server nicht einfach über das Webinterface ein und aus?

hannibal_23
06-07-2007, 15:19
Nunja, da müßte ich das Superadmin PW weitergeben.

Außerdem läuft TS trotzdem weiter.

Cyrus
06-07-2007, 15:31
Ein Tip zur Suche wäre nicht schlecht
Google: "Safe Mode"

DaFox
07-07-2007, 15:36
Hm...
Ich habe das Forum durchsucht, aber nichts gefunen.

Ich bin der englischen Sprache nicht soooo mächtig.

Möchte halt TS ab und anschalten können über meine Seite.

Ein Tip zur Suche wäre nicht schlecht (hoffentlich kein englisch :( )

1. Safe-Mode

Im Prinzip ist das 'ne ganz einfache Sache. Safe-Mode ist eine Art "Sicherheitsschicht" für PHP, die in der Regel von Webhostern genutzt wird, damit die Benutzer mit ihren PHP-Scripten keinen Unsinn treiben.

Wenn der Safe-Mode aktiviert ist, dann steht die Funktion shell_exec() nicht zur Verfügung und mit exec() kannst du nur Dateien ausführen, die sich in einem bestimmten Verzeichnis befinden, welches in der PHP-Konfiguration definiert wird.

Mehr Informationen dazu findest du im PHP-Handbuch:
http://www.php.net/manual/de/features.safe-mode.php (Dabei von "Features" zu sprechen ist eigentlich ein Witz.)
http://www.php.net/manual/de/function.shell-exec.php

Du kannst nicht auf den Teamspeak-Server zugreifen, wenn der Safe-Mode aktiviert ist. Daran kann man nichts ändern, ausser man definiert das TS-Verzeichnis als Verzeichnis für ausführbare Dateien oder man legt ein anderes Programm in das Safe-Mode-Exec-Dir, welches dann den TS ohne die Restriktionen startet. Besser wäre aber, den Safe-Mode einfach abzuschalten.

2. TS-Server über PHP starten/stoppen

Wenn der TS-Server unter dem Benutzer-Account gestartet werden soll, wie der Webserver - also zum Beispiel "nobody" oder "www-data" - dann reicht es aus den Server einfach mit exec() zu starten.


exec('/opt/teamspeak/server_linux start 2>&1 &');


Wenn der TS-Server hingegen unter als separater Benutzer gestartet werden soll, dann muss z.B. Sudo verwendet werden.


exec('/usr/bin/sudo -u teamspeak /opt/teamspeak/server_linux start 2>&1 &', $output, $return);


Um zu testen ob der TS-Server läuft kann man die Existenz der PID-Datei prüfen und ggf. auch noch überprüfen, ob der angegebene Prozess überhaupt läuft.


function isRunning() {
if(($pid = @file_get_contents('/var/run/teamspeak.pid')) !== false) {
$pid = rtrim($pid);

if($pid > -1) {
exec("/bin/ps -l --pid $pid", $ignore, $return);
return $return == 0;
}
}

return false;
}


HTH

hannibal_23
07-07-2007, 15:41
Super, danke für die Info's.

Werde mich mal am WE dransetzen und zuhause auf dem Server ausprobiern,
bevor ich es "draußen" installiere.

Ein Wunderschönes WE wünsche ich.