php exec和shell_exec无法正常工作

时间:2009-07-10 04:00:10

标签: php shell exec

我想在我的服务器上运行exe文件并将输出返回到浏览器屏幕。 exe文件接受输入文件,然后在屏幕上返回数据。

为什么这段代码不起作用?

$output = shell_exec('myprogram < INP.DAT');
echo "<pre>" . var_export($output, TRUE) ."</pre>\\n";

在浏览器屏幕上显示“NULL”。我也试过exec()。它返回“Array()”。

4 个答案:

答案 0 :(得分:7)

shell_exec手册页上的

One of the comments说:

  

请注意以下不一致:shell_exec()如果命令的输出为空,则反引号操作符不会返回字符串 - 它们将返回NULL

     

这将与''返回false进行严格比较。


可能是disabled if PHP is in safe mode

  

shell_exec()(功能相当于反叛)
  当PHP以安全模式运行时,此功能被禁用。

     

exec()
  您只能在safe_mode_exec_dir内执行可执行文件。出于实际原因,目前不允许在可执行文件的路径中包含..个组件。 escapeshellcmd()在此函数的参数上执行。

您可以使用phpinfo()功能检查服务器的PHP设置。

答案 1 :(得分:2)

这应该有效:

$output = array();
exec('myprogram < INP.DAT', $output);
var_dump($output);

答案 2 :(得分:2)

myprogram是否可以从默认shell获得?它在特定目录中吗?
尝试将myprogram < INP.DAT替换为/full/path/to/myprogram < INP.DAT

答案 3 :(得分:0)

有时这些函数在没有安全模式的情况下被禁用,你必须在php.ini中启用它们