[英]Execute external application with PHP
我有一个 linux 命令行,需要通过 PHP 或 Javascript(首选 PHP)执行。
命令是keygen AB3554C1D1971DB7 \pc_code 365
但是,我想用 $pccode 之类的字符串替换\pc_code
,用户在其中输入生成的 PC 代码。 这是一个合法的项目,但程序的创建者给我提供了帮助。
你可以使用shell_exec() :
$cmd = sprintf("keygen AB3554C1D1971DB7 %s 365",
escapeshellarg($pccode));
$result = shell_exec($cmd);
每当您执行外部命令时,您都必须非常小心以避免命令注入。 您可以使用escapeshellarg()来防止这种情况。
看看执行
可能是这个程序写得不好,将它的信息输出到 stderr 而不是 stdout。 或者可能是它失败并(正确地)将错误消息打印到 stderr。 在任何一种情况下,shell_exec 都不会捕获 stderr。 但是,您应该能够通过在命令末尾添加“ 2>&1
”来捕获 stderr ,即:
$result = shell_exec('keygen AB3554C1D1971DB7 \pc_code 365 2>&1');
echo '<pre>'.htmlspecialchars($result).'</pre>';
编辑:为了连续性,解决问题的是下面另一个答案的评论中提到的内容:
也许它不喜欢裸露的反斜杠? 你可以试试“
\\pc_code
”
从 JavaScript 执行 Linux 命令是不可能的(也不应该)。 假设您指的是在客户端 Web 浏览器上运行的 JavaScript,则不会有任何安全模型可以保护人们免受恶意命令行访问。 PHP 是另一回事。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.