繁体   English   中英

使用 PHP 执行外部应用程序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM