2013-06-01 108 views
0

我有以下代码:PHP Shell_Exec不能正常工作?

$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>"; 

也不起作用。为什么?

回答

1

这肯定是一个权限问题。确保您正尝试使用脚本中的./命令执行的文件具有+ x perms。以下是关于提供文件可执行权限的前一个线索:Creating executable files in Linux

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

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

chmod +x ProgramName 
+0

没有,但没有解决它:/感谢您的帮助,虽然 – Orca

+0

任何其他建议 – Orca

+0

嗯。当你说它不起作用时,你可以在你的问题中包括它给出的错误吗?或者它只是打印一个空字符串? –

0

取决于$ VAR1和$ VAR2你可能需要做它周围的escapeshellarg通话内容。

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

即使它不起作用它可能是一个好主意。同时确认你的路径是正确的。也许与file_exits('./Program');检查