[英]Executing unix shell commands using PHP
将使用文本框捕获命令。 我被告知我必须使用exec()
函数来执行UNIX shell命令。
像这样的东西,用户在文本框中输入ls。 exec()
函数将执行UNIX命令,命令将显示在网页上。
我想知道如何使用PHP获取shell命令的输出并在Web浏览器中显示。
我不知道从哪里开始,因为我对PHP很新。
我正在使用Ubuntu。
exec
?
system
?
shell_exec
?
passthru
?
反引号?
Pfah!
真正的开发人员使用proc_open
! 它有让你们三个PHP流数据送入过程,并读取主要和明显的优势, stdout
和stderr
。 这是其他流程执行功能根本不能很好地完成的事情。
它来自一些样板代码的小成本,所以它更冗长一点。 我认为权衡是非常好的。
哦, 从您的用户运行任意命令可能是您可能想到的最大的安全风险之一,但我现在假设您知道这一点。
使用$output = system($command);
请参阅http://php.net/system ,不要忘记阅读有关安全性的警告。 如果让用户将任何数据传递给system()
(或exec()
等),那就好像他们的服务器上有一个shell。 如果您没有正确清理传递给通过这些函数执行的程序的参数,则同样适用。
尝试$output = shell_exec('ls -lart');
doc shell_exec
只要它是一行就可以echo
显exec
的返回值。
像这样:
echo exec('ls');
但它只显示第一行。
exec(escapeshellarg($userSuppliedInput), $output);
echo $output;
您可以使用反引号来实现此目的。 喜欢:
$output = `command-executable -switches`
此外,某些应用程序将其输出回显到STD_ERR流,因此您可能看不到输出。 在linux上,您可以通过在命令字符串中附加2>&1
将错误输入重定向到“正常”输入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.