PhP Script startet Server nicht.

Dieses Thema im Forum "Webmaster Hilfe / Programmierer Forum" wurde erstellt von toadakadomi, 25.05.2013.

  1. #1 toadakadomi, 25.05.2013
    toadakadomi

    toadakadomi Benutzer

    Dabei seit:
    13.06.2012
    Beiträge:
    50
    Zustimmungen:
    0
    Hallo,

    Ich habe folgendes PHP Script(testweiße) erstellt:

    PHP:
    <?php
    $output
    shell_exec("/home/mta/mta/start.sh start");
    echo 
    $output;
    ?>
    Der Output ist auch normal..


    Mein .sh Script(Vom teamspeak3 server geklaut):
    Code:
    #!/bin/sh
    # Copyright (c) 2010 TeamSpeak Systems GmbH
    # All rights reserved
    
    COMMANDLINE_PARAMETERS="${2}" #add any command line parameters you want to pass here
    D1=$(readlink -f "$0")
    BINARYPATH="$(dirname "${D1}")"
    cd "${BINARYPATH}"
    LIBRARYPATH="$(pwd)"
    BINARYNAME="mta-server"
    
    
    case "$1" in
        start)
            if [ -e mta-server.pid ]; then
                if ( kill -0 $(cat mta-server.pid) 2> /dev/null ); then
                    echo "The server is already running, try restart or stop"
                    exit 1
                else
                    echo "mta-server.pid found, but no server running. Possibly your previously started server crashed"
                    echo "Please view the logfile for details."
                    rm mta-server.pid
                fi
            fi
            if [ "${UID}" = "0" ]; then
                echo WARNING ! For security reasons we advise: DO NOT RUN THE SERVER AS ROOT
                c=1
                while [ "$c" -le 10 ]; do
                    echo -n "!"
                    sleep 1
                    c=$((++c))
                done
                echo "!"
            fi
            echo "Starting the TeamSpeak 3 server"
            if [ -e "$BINARYNAME" ]; then
                if [ ! -x "$BINARYNAME" ]; then
                    echo "${BINARYNAME} is not executable, trying to set it"
                    chmod u+x "${BINARYNAME}"
                fi
                if [ -x "$BINARYNAME" ]; then
                    export LD_LIBRARY_PATH="${LIBRARYPATH}:${LD_LIBRARY_PATH}"                    
                    "./${BINARYNAME}" ${COMMANDLINE_PARAMETERS} > /dev/null & 
                    echo $! > mta-server.pid
                    echo "TeamSpeak 3 server started, for details please view the log file"
                else
                    echo "${BINARNAME} is not exectuable, cannot start TeamSpeak 3 server"
                fi
            else
                echo "Could not find binary, aborting"
                exit 5
            fi
        ;;
        stop)
            if [ -e mta-server.pid ]; then
                echo -n "Stopping the TeamSpeak 3 server"
                if ( kill -TERM $(cat mta-server.pid) 2> /dev/null ); then
                    c=1
                    while [ "$c" -le 300 ]; do
                        if ( kill -0 $(cat mta-server.pid) 2> /dev/null ); then
                            echo -n "."
                            sleep 1
                        else
                            break
                        fi
                        c=$((++c)) 
                    done
                fi
                if ( kill -0 $(cat mta-server.pid) 2> /dev/null ); then
                    echo "Server is not shutting down cleanly - killing"
                    kill -KILL $(cat mta-server.pid)
                else
                    echo "done"
                fi
                rm mta-server.pid
            else
                echo "No server running (mta-server.pid is missing)"
                exit 7
            fi
        ;;
        restart)
            $0 stop && $0 start || exit 1
        ;;
        status)
            if [ -e mta-server.pid ]; then
                if ( kill -0 $(cat mta-server.pid) 2> /dev/null ); then
                    echo "Server is running"
                else
                    echo "Server seems to have died"
                fi
            else
                echo "No server running (mta-server.pid is missing)"
            fi
        ;;
        *)
            echo "Usage: ${0} {start|stop|restart|status}"
            exit 2
    esac
    exit 0
    
    Mein problem ist es, dass ich über putty ganz normal den Server starten kann über dieses Script.

    Über PhP hingegen nicht.

    Die .pid Datei wird erstellt usw.., der Server bleibt aber aus.

    Der ganze Ordner hat von mir testweiße die Rechte (777) bekommen.

    Ich weiß echt nicht weiter..
     
  2. AdMan

    schau mal hier: Windows-Wartungs-Tool. Viele Probleme lassen sich damit einfach beheben. Oftmals ist der PC dann auch schneller!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren.
  3. #2 xandros, 25.05.2013
    xandros

    xandros IT Consultant, Cisco Registered Partner
    Moderator

    Dabei seit:
    05.07.2007
    Beiträge:
    25.885
    Zustimmungen:
    91
    Ort:
    Umkreis Duisburg, neben Mannheim, hinter Hamburg
    Welche Rechte du auf den Ordner setzt spielt wenig Rolle.

    Viel wichtiger ist, welche Rechte du dem User zugewiesen hast, unter dessen Namen die Shell ausgefuehrt wird, in der das PHP-Script laeuft. Wird also z.B. der Shell-Execute-Befehl als PHP-Modul von einem Apache aus aufgerufen, dann laeuft die Shell auch unter der Benutzerkennung Apache....
     
  4. #3 toadakadomi, 25.05.2013
    toadakadomi

    toadakadomi Benutzer

    Dabei seit:
    13.06.2012
    Beiträge:
    50
    Zustimmungen:
    0
    Wie meinste das jetzt?

    Das PHP Script wird als www-data ausgeführt, der ist auch Besitzer des Ordners
     
  5. #4 xandros, 25.05.2013
    Zuletzt bearbeitet: 25.05.2013
    xandros

    xandros IT Consultant, Cisco Registered Partner
    Moderator

    Dabei seit:
    05.07.2007
    Beiträge:
    25.885
    Zustimmungen:
    91
    Ort:
    Umkreis Duisburg, neben Mannheim, hinter Hamburg
    www-data ist der Besitzer des Ordners, in dem das Script sich befindet.
    Ist www-data aber auch berechtigt, den Server neu zu starten und somit auf ein Systemordner zuzugreifen? (In der Regel besitzt www-data dafuer KEINE Berechtigung - und das aus gutem Grund, da sonst ueber Injections von aussen theoretisch ein Zugriff ueber www-data auf Systemanwendungen moeglich waeren!)

    Vielleicht ist es zweckmaessiger, wenn solche Dinge via CGI mit anderen Usercredentials ausgefuehrt werden. Unter Windows gibt es dafuer Impersonate-Richtlinien, die man einhalten sollte. (Unter Linux-Systemen ist das aehnlich.)
     
  6. #5 toadakadomi, 25.05.2013
    toadakadomi

    toadakadomi Benutzer

    Dabei seit:
    13.06.2012
    Beiträge:
    50
    Zustimmungen:
    0
    Währe es denn mögich und sicherer über einen normalen Linux user laufen zu lassen?(Also das Script usw..) Ich meinte nicht root sondern ein eigener extra für dieses Script.
    Wenn ja, wie lässt sich das realißieren?(Hatte mit Shells/PHP-Shells bis jetzt nichts am Hut.)
     
Thema: PhP Script startet Server nicht.
Besucher kamen mit folgenden Suchen
  1. mta server status script

Die Seite wird geladen...

PhP Script startet Server nicht. - Ähnliche Themen

  1. GTA V startet nicht ?!

    GTA V startet nicht ?!: hallo zusammen, ich habe die steam version von GTA V, aber sie lässt sich nicht starten. nach einigen google suchaktionen, habe ich rausgefunden...
  2. PC startet, jedoch kein Bild - Error Code 15

    PC startet, jedoch kein Bild - Error Code 15: Guten Abend, Ich habe ein mühsames Problem: Seit einiger Zeit hat mein PC die Make, dass er 2-3 anläufe braucht bis er anspringt (Wie ein...
  3. PC startet nicht automatisch nach dem Strom angeschaltet wird

    PC startet nicht automatisch nach dem Strom angeschaltet wird: Hallo zusammen. Ich habe eine schaltbare Steckdose. Nach dem ich meinen PC herunterfahre, schaltet sich nach 2 Minuten automatisch die Stromzufuhr...
  4. Prince of Persia startet nicht ?!

    Prince of Persia startet nicht ?!: moin zusammen, hab mal nach langer zeit Prince of Persia the two thrones ausgegraben. installieren geht ohne probleme. wenn ich es allerdings...
  5. Windows Server 2012R2 Problem

    Windows Server 2012R2 Problem: Moin, wir haben das Problem, das bei Aufforderung das Benutzerpasswort zu ändern in der Windowsumgebung, die Fehlermeldung: "Das System hat...