我有以下代码:
$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>";
例如也不起作用。为什么?
这肯定是权限问题。确保您尝试使用脚本中的 ./ 命令执行的文件具有 +x 权限。这是关于赋予文件可执行权限的先前线程:在 Linux 中创建可执行文件。
如果文件已经具有 +x 权限,则可能是您的脚本运行命令的权限问题。无论哪种方式,如果您可以运行 ls 但不能运行 ./ 和 top,则必须是权限。
编辑:我给的链接,我意识到有很多关于 Perl 和 bash 脚本的信息。重要的部分是使文件可执行的命令是
chmod +x ProgramName
根据 $var1 和 $var2 的内容,您可能需要escapeshellarg
围绕它进行调用。
$output = shell_exec("./Program ".escapeshellarg($var1)." ".escapeshellarg($var2));
即使它不起作用,它也可能是一个好主意。还要确认您的路径是正确的。也许有一张file_exits('./Program');
支票