我想在单击html代码中的按钮后执行shell命令,所以:
在我的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代码正在被正确执行,因为如果我用一个简单的cat修改shell命令,它会按预期工作,但我无法弄清楚为什么它执行的命令是{{{ 1}}表达。
我已经验证了这样的sed
命令在CLI中直接执行时有效,我也放弃了任何权限问题,因为我将“filename.txt”编码为777.实际上如果更改php代码以附加一些文本到文件它也有效。例如:
sed
在寻找信息之后,我意识到我想要的东西可以直接用php完成:
$output = shell_exec("echo hi >> filename.txt");
但现在我只是好奇为什么我的file_put_contents("filename.txt", "");
file_put_contents("filename.txt", "First_line_content");
命令不起作用。
我在Ubuntu桌面上运行LAMP,其中包含以下sed
版本:
sed
答案 0 :(得分:1)
当sed在与文件相同的目录中创建临时文件时,该脚本必须具有对该目录的写入权限。