【问题标题】:Create a file in linux via php/shell script?通过 php/shell 脚本在 linux 中创建文件?
【发布时间】:2013-03-31 18:03:09
【问题描述】:

我正在尝试创建一个 php\shell 脚本来创建一个文件。我正在使用 exec() 命令来创建 shell 和 php 本身之间的链接。我也在尝试从用户那里接收数据,为此我有一个链接到脚本的 php 表单页面。

<?php
$username = $_POST['txt_username'];
exec("sudo echo $username > file.txt");
?>

根据我的研究,我发现 exec() 不接受 $_POST 或 $_GET 变量。我还尝试过extract()、getenv() 和var_dump() 等函数,以及escapeshellcmd() 和escapeshellarg()。有人可以帮我吗?

【问题讨论】:

  • exec() 不知道字符串变量的来源。但是,您应该为 shell 上下文转义它们,@ 987654323@ 浮现在脑海中。而exec 并不少见地受到服务器设置的限制。你为什么不使用 PHP-builtins 来写入文件?
  • 这是一个学校项目,我必须创建一个 php 表单页面来接收数据以输入用户的文件信息。我不能使用 php 内建函数。
  • @user2229813:我想你误解了mario:php有写入文件的功能,比如file_put_contents()。为什么你不能使用它们?
  • 哎呀,这看起来很邪恶。不要那样做!让 PHP 编写这个文件。您将客户端输入直接传递给操作系统的命令行,这不仅仅是一个令人讨厌的安全漏洞。
  • 想象一下,如果在 HTML 表单中输入的用户名正是 "foo; /bin/rm -rf /" 字符串 - 没有双引号......

标签: php linux bash shell


【解决方案1】:

这就是你要找的吗?

<?php

$uname = $_POST['UserName']; 
$file_to_write = "file.txt";
$open_file = fopen($file_to_write,'w') or die ("Cant Open File");
fwrite($file_to_write, $uname);
flcose($file_to_write);

?>

【讨论】:

    【解决方案2】:

    我会这样做的。

    <?php
        file_put_contents( 'file.txt', $_POST['txt_username'] );
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-19
      • 2015-10-13
      • 1970-01-01
      • 2012-04-20
      • 1970-01-01
      • 2018-08-20
      相关资源
      最近更新 更多