4

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

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

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

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

4

4 回答 4

6

shell_exec手册页上的评论之一说:

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

''这将对return进行严格比较false


如果 PHP 处于安全模式,它可能会被禁用。

shell_exec()(相当于反引号的
功能)当 PHP 在安全模式下运行时,此功能被禁用。

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

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

于 2009-07-10T04:02:53.837 回答
2

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

于 2010-06-11T05:49:16.607 回答
2

这应该工作:

$输出 = 数组();
exec('myprogram < INP.DAT', $output);
var_dump($输出);
于 2009-07-10T04:06:03.440 回答
0

有时这些功能在 php 未处于安全模式的情况下被禁用,您必须在 php.ini 中启用它们

于 2013-03-27T01:05:32.833 回答