通过php/shell脚本在linux中创建文件?

通过php/shell脚本在linux中创建文件?,php,linux,bash,shell,Php,Linux,Bash,Shell,我正在尝试创建一个php\shell脚本来创建一个文件。我使用exec()命令创建shell和php本身之间的链接。我还试图从用户那里接收数据,为此我有一个链接到脚本的php表单页面 <?php $username = $_POST['txt_username']; exec("sudo echo $username > file.txt"); ?> 从我的研究中,我发现exec()不接受$\u POST或$\u GET变量。我还尝试了extract()、getenv()

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

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


从我的研究中,我发现exec()不接受$\u POST或$\u GET变量。我还尝试了extract()、getenv()和var_dump()等函数,以及escapeshellcmd()和escapeshellarg()。有人能帮我吗?

这就是你要找的吗

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

?>

我会这样做

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


exec()
不知道字符串变量的来源。但是,您应该在shell上下文中转义它们,
escapeshellarg()
。而且
exec
不受服务器设置的限制。为什么不使用PHP内置程序来写入文件呢?这是一个学校项目,在这个项目中,我必须创建一个PHP表单页面来接收数据,以便从用户那里输入文件信息。我不能使用php内置函数。@user2229813:我想你误解了mario:php有写入文件的函数,比如
file\u put\u contents()
。你为什么不能用它们?哎哟,这看起来很邪恶。不要那样做!让PHP编写这个文件。您正在将客户端输入直接传递到操作系统的命令行,这不仅仅是一个严重的安全漏洞。想象一下,如果在HTML表单中键入的用户名正是
“foo;/bin/rm-rf/”
字符串,而没有双引号。。。。