sed命令通过了shell_exec没有被执行
问题描述:
我想点击一个按钮的HTML代码中后执行shell命令,所以:sed命令通过了shell_exec没有被执行
在我的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代码正在正确执行,因为如果我通过一个简单的猫修改shell命令,它按预期工作,但我无法弄清楚为什么当执行的命令是什么时候什么也不做,sed
表达。
我已经验证了这样的sed
命令在直接在CLI中执行时起作用,并且自从我将“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
命令未工作。
我运行LAMP在Ubuntu桌面与以下sed
版本:
$ sed --version
sed (GNU sed) 4.2.2
答
由于sed的创建在同一目录下文件的临时文件,脚本必须具有写权限到该目录。