Команда Sed через shell exec не выполняется


Я хочу выполнить команду оболочки после нажатия кнопки внутри html-кода, поэтому:

В моем html-коде:

<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>"; 
?>

Цель состоит в том, чтобы удалить все строки текстового файла, кроме самой первой.

Я думаю, что php-код выполняется правильно, поскольку, если я изменю команду оболочки простым котом, она будет работать так, как ожидалось, но я не могу понять, почему она ничего не делает, когда команда для выполнения таковаsed выражение.

Я проверил, что такая команда sed работает при выполнении непосредственно в командной строке, и я также отказался от любых проблем с разрешениями с тех пор, как я изменил"filename.txt "на 777. На самом деле, если изменить php-код, чтобы добавить некоторый текст в файл, он также работает. Например:

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

После поиска информации я понял, что то, что я хочу, можно сделать непосредственно с помощью php с помощью:

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

Но теперь мне просто любопытно, почему моя команда sed не сработала.

Я бегу ЛАМПА на рабочем столе Ubuntu со следующей версией sed:

$ sed --version
sed (GNU sed) 4.2.2
Author: Zumo de Vidrio, 2017-02-24

1 answers

Поскольку sed создает временный файл в том же каталоге, что и файл, сценарий должен иметь разрешения на запись в этот каталог.

 1
Author: SLePort, 2017-02-24 12:15:33