Quote:
Originally Posted by hannibal_23
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.
Code:
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.
Code:
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.
Code:
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