2017-02-24 3 views
2

Ich möchte innerhalb eines HTML-Code auf einen Button klicken, einen Shell-Befehl auszuführen, so:Sed-Befehl durch shell_exec nicht ausgeführt wird

In meinem HTML-Code:

<form action=execute.php method="post"> 
    <input name="submit" type="submit" value="Reset"> 
</form> 

execute.php:

<?php 
    $output = shell_exec("sed -i '2,3d' filename.txt"); 
    //$output = shell_exec("cat filename.txt"); 
    echo "<pre>$output</pre>"; 

    $url = htmlspecialchars($_SERVER['HTTP_REFERER']); 
    echo "<a href='$url'>Back</a>"; 
?> 

der Zweck ist es, alle Zeilen einer Textdatei, aber die ersten ein zu entfernen.

Ich denke, dass der PHP-Code ordnungsgemäß ausgeführt wird, da, wenn ich den Shell-Befehl durch eine einfache Katze ändern, es wie erwartet funktioniert, aber ich kann nicht herausfinden, warum es nichts tut, wenn der Befehl sed ausgeführt wird Ausdruck.

Ich habe überprüft, dass solche sed Befehl funktioniert, wenn direkt in CLI ausgeführt und ich habe auch alle Berechtigungen Problem verworfen, da ich "filename.txt" auf 777 chmooded. In der Tat, wenn Sie den PHP-Code, um etwas Text an die Datei funktioniert auch. Zum Beispiel:

$output = shell_exec("echo hi >> filename.txt"); 

Nach der Suche nach Informationen wurde mir klar, dass das, was ich will direkt mit PHP mit getan werden kann:

file_put_contents("filename.txt", ""); 
file_put_contents("filename.txt", "First_line_content"); 

Aber jetzt bin ich nur neugierig, warum mein sed Befehl tat nicht Arbeit.

I LAMP in einem Ubuntu Desktop renne mit folgenden sed Version:

$ sed --version 
sed (GNU sed) 4.2.2 

Antwort

1

Als eine temporäre Datei im selben Verzeichnis wie die Datei sed erstellt, muss das Skript Schreibzugriff auf dieses Verzeichnis haben.

Verwandte Themen