2017-10-19 4 views
0

Wenn ich den folgenden Befehl tun, erhalte ich eine ‚hey‘ Ausgabe:PHP shell_exec funktioniert nicht für einige Befehle?

echo shell_exec("echo 'hey'"); 

Aber wenn ich den folgenden Befehl tun, wird es nicht töten jede screen:

echo shell_exec("killall screen"); 

Oder wenn ich tun

echo shell_exec("sh /var/www/html/run.sh"); 

Es wird nicht die Datei auf allen laufen (die Datei wird auf dem Bildschirm zu töten aswell)

Und wenn ich sogar diese Datei mit Get Inhalt bekommen, liest es den Inhalt darin erfolgreich.

Wenn es echo ausführen kann, was ist also falsch?

+4

Es ist wahrscheinlich Berechtigungen. 'killall' benötigt normalerweise eine su/sudo-Berechtigung, wenn es nicht Ihr eigener Prozess ist. – aynber

+0

Sehr wahrscheinlich läuft der Benutzer Ihrer Website, da er keine Berechtigung zum Ausführen von 'kill' und ähnlichen Befehlen hat. – Mikk3lRo

+0

Gibt die Erlaubnis etwas PHP-seitiges oder Server? – Jony

Antwort

0

Um solche mächtigen Befehle auszuführen, musste ich this library wie in this question angegeben verwenden. Dies erlaubt mir, mich mit root-Zugang in den SSH einzuloggen und jeden Befehl auszuführen!

function ssh_script($script, $ip, $user, $pass) { 
      $ssh = new Net_SSH2($ip); 
    if (!$ssh->login($user, $pass)) { 
     exit('Login Failed'); 
    } 

    if ($ssh !== false) { 
     echo $ssh->exec("sh " . $script); 
    } 
    else { 
     echo "fail"; 
    } 
} 
Verwandte Themen