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