0

我有以下代码:

$output = shell_exec("./Program $var1 $var2");
echo "<pre>$output</pre>";

它不起作用但是

$output = shell_exec("ls");
echo "<pre>$output</pre>";

确实有效。

$output = shell_exec("top");
echo "<pre>$output</pre>";

例如也不起作用。为什么?

4

2 回答 2

1

这肯定是权限问题。确保您尝试使用脚本中的 ./ 命令执行的文件具有 +x 权限。这是关于赋予文件可执行权限的先前线程:在 Linux 中创建可执行文件

如果文件已经具有 +x 权限,则可能是您的脚本运行命令的权限问题。无论哪种方式,如果您可以运行 ls 但不能运行 ./ 和 top,则必须是权限。

编辑:我给的链接,我意识到有很多关于 Perl 和 bash 脚本的信息。重要的部分是使文件可执行的命令是

chmod +x ProgramName
于 2013-06-01T04:14:55.113 回答
0

根据 $var1 和 $var2 的内容,您可能需要escapeshellarg围绕它进行调用。

 $output = shell_exec("./Program ".escapeshellarg($var1)." ".escapeshellarg($var2));

即使它不起作用,它也可能是一个好主意。还要确认您的路径是正确的。也许有一张file_exits('./Program');支票

于 2013-06-01T04:54:12.800 回答